提问者:小点点

使用和更新画布节点的JavaFX 8.0场景生成器2.0


所以我用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()方法,但是画布不会更新,有什么想法吗?


共1个答案

匿名用户

你没有告诉我们你在哪里以及从哪个线程调用渲染方法。无论如何——我敢打赌你的图像没有被正确加载。在绘制图像之前检查图像的错误属性。