JavaFX我无法在Scene Builder中创建的画布上绘制任何内容

时间:2016-11-30 15:41:07

标签: java canvas javafx scenebuilder

我在SceneBuilder中创建了包含canvas对象的场景。现在我试图在画布上画任何东西,但什么都没有出现。也许有人可以告诉我我做错了什么。谢谢你的建议。

这是canvas对象的声明:

public class ApplicationControler implements Initializable {

  @FXML
    public Canvas artHorizon;

应该在其上绘制内容的方法:

public void drawOval(){
    artHorizon = new Canvas(400, 400);
    GraphicsContext gc = artHorizon.getGraphicsContext2D();

    gc.setFill(Color.DARKRED);
    gc.fillOval(110, 30, 50, 50);
}

主要课程:

public class Main extends Application {

@Override
public void start(Stage stage) throws Exception {

    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/MainPane.fxml"));
    Parent parent = fxmlLoader.load();
    Scene scene = new Scene(parent);


    stage.setScene(scene);
    stage.setTitle("Login Page");
    stage.show();

    ApplicationControler controller = fxmlLoader.getController();
    controller.drawOval();

}

public static void main(String[] args) {
    launch(args);
}

}

2 个答案:

答案 0 :(得分:2)

您已经使用了注释@FXML,因此您的Canvas已经初始化" fx:id" (在FXML文件中)加载控制器时,请尝试删除实例化,直接使用带注释的画布:

artHorizon = new Canvas(400, 400); // to delete

答案 1 :(得分:1)

我认为你应该删除:

artHorizon = new Canvas(400, 400);

看看你能否做到这样的事情:

artHorizon.setHeight(400);
artHorizon.setWidth(400);