所以我用SceneBuilder 2.0创建一个带有Canvas节点的stage,然后用Canvas的ContextGraphics从控制器文件中修改它,这可能吗?我了解到画布可以在从任何线程附加到阶段之前进行修改,但是如果它已经附加到阶段,则必须由JavaFX应用程序线程进行修改,否则您会发现诸如画布不更新之类的问题(这正是我正在发生的情况)。
我目前有这个代码不起作用:
在JavaFX应用程序中:
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Window.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
并且在控制器文件中:
@FXML
private Canvas canvas;
public void render() {
GraphicsContext gc = canvas.getGraphicsContext2D();
Image image1 = new Image("/img/Test1.png");
gc.drawImage(image1, 300, 300);
}
然后我调用render()方法,但是画布不会更新,有什么想法吗?
你没有告诉我们你在哪里以及从哪个线程调用渲染方法。无论如何——我敢打赌你的图像没有被正确加载。在绘制图像之前检查图像的错误属性。