Как я могу взаимодействовать с моим холстом в FXMLDocumentController - PullRequest
0 голосов
/ 23 июня 2019

Я хочу нарисовать пиксели на холсте после нажатия кнопки (так в функции handleButtonAction моего FXMLDocumentController)

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;
    private Canvas canvas;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        //I'd like to perform the interaction with the Canvas here
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}

но везде, где я смотрел, я видел только примеры, где холст был изменен в функции запуска, например:

public class BasicOpsTest extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Drawing Operations Test");
        Group root = new Group();
        Canvas canvas = new Canvas(300, 250);
        GraphicsContext gc = canvas.getGraphicsContext2D();
        drawShapes(gc);
        root.getChildren().add(canvas);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

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

есть ли способ сделать это?

1 Ответ

2 голосов
/ 23 июня 2019

Почему бы тебе просто не попробовать? Вы можете манипулировать холстом в любое время. Это не связано ни с методом start, ни с методом initialize. Но я думаю, вам придется добавить дополнительную аннотацию @FXML к элементу canvas, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...