Я хочу рисовать пиксели на своем холсте после нажатия кнопки (так, в функции 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);
}
}
Есть ли способ сделать это?





Почему бы тебе просто не попробовать? Вы можете манипулировать холстом в любое время. Это не связано ни с методом запуска, ни с методом инициализации. Но я думаю, вам придется добавить дополнительную аннотацию @FXML к вашему элементу холста, чтобы это заработало.
Я не совсем понял, как работает контроллер, но как только я добавил "@FMXL", все заработало нормально :)