JavaFX 我无法在 Scene Builder 中创建的 canvas 上绘制任何内容
JavaFX I can't draw anything on canvas created in Scene Builder
我在 SceneBuilder 中创建了包含 canvas 对象的场景。现在我试图在 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);
}
和主要 class:
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);
}
}
我认为你应该删除:
artHorizon = new Canvas(400, 400);
看看你能不能做这样的事情:
artHorizon.setHeight(400);
artHorizon.setWidth(400);
您已经使用了注解 @FXML
,所以当您加载控制器时,您的 Canvas 已经初始化“fx:id
”(在 FXML 文件中),因此请尝试删除 Instantiation你可以直接使用带注释的 canvas :
artHorizon = new Canvas(400, 400); // to delete
我在 SceneBuilder 中创建了包含 canvas 对象的场景。现在我试图在 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);
}
和主要 class:
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);
}
}
我认为你应该删除:
artHorizon = new Canvas(400, 400);
看看你能不能做这样的事情:
artHorizon.setHeight(400);
artHorizon.setWidth(400);
您已经使用了注解 @FXML
,所以当您加载控制器时,您的 Canvas 已经初始化“fx:id
”(在 FXML 文件中),因此请尝试删除 Instantiation你可以直接使用带注释的 canvas :
artHorizon = new Canvas(400, 400); // to delete