2016-11-05 55 views
0

我想在按钮中使用按钮,以便在我的JavaFX画布上绘制一些东西。JavaFX:通过控制器按下按钮绘制画布

package sample; 

import javafx.fxml.FXML; 
import javafx.scene.canvas.Canvas; 
import javafx.scene.canvas.GraphicsContext; 
import javafx.scene.control.Button; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.ArcType; 
import javafx.scene.control.Label; 

public class Controller { 

    @FXML 
    Canvas canvas1; 

    @FXML 
    Label label; 

    public void onButtonPress(){ 
     System.out.println("test"); 
     Canvas canvas1 = new Canvas(300, 250); 
     GraphicsContext gc = canvas1.getGraphicsContext2D(); 
     drawShapes(gc); 
     label.setText("test"); 
    } 

    public void drawShapes(GraphicsContext gc) { 
     gc.setFill(Color.GREEN); 
     gc.setStroke(Color.BLUE); 
     gc.setLineWidth(5); 
     gc.strokeLine(40, 10, 10, 40); 
     gc.fillOval(10, 60, 30, 30); 
    } 
} 

当我按下按钮时,没有任何反应。 XML文件中的画布定义如下:

<Canvas fx:id="canvas1" height="200.0" layoutX="30.0" layoutY="14.0" width="552.0" /> 

任何人都可以帮助我吗?

回答

2

您正在创建一个新画布并对其进行绘制,而不是绘制在FXML文件中创建的画布上。

删除

Canvas canvas1 = new Canvas(300, 250); 
0

如说行了,而不是创建一个新的画布,你只需要使用你注解之一:

@FXML Canvas canvas1; 

,最后得出你的形状,你需要执行来自你的控制器的动作