Итак, я пытаюсь заполнить мой прямоугольник палитрой цветов, но он не работает.
Я делаю это так:
@FXML
private ColorPicker colorPicker = new ColorPicker(Color.BLACK);
@FXML
public void changeColor()
{
myRect.setFill(colorPicker.getValue());
System.out.println("color = " + colorPicker.getValue());
}
Я связал эту функцию с ColorPicker в SceneBuilder, но когда я выбираю цвет, мой прямоугольник меняет свой цвет только на черный (или любой другой цвет по умолчанию, который я помещаю в конструктор) независимо от того, какой цвет я выберу. Поэтому каждый раз, когда я выбираю цвет, я получаю вывод "color = 0xff0000ff". Это потому, что я не использую EventHandler (я почему-то не смог заставить его работать в функции initialize)? В моем понимании, если я связываю эту функцию с полем OnAction, она должна работать точно так же, как слушатель.
public class Main extends Application {
Stage window;
@Override
public void start(Stage primaryStage) {
try {
window = primaryStage;
Parent root = FXMLLoader.load(getClass().getResource("/MainScreen.fxml"));
Scene scene = new Scene(root);
window.setScene(scene);
window.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
public class Controller{
@FXML
private ColorPicker colorPicker = new ColorPicker(Color.BLACK);
@FXML
private Rectangle myRect;
public void initialize(){}
@FXML
public void changeWaveColor()
{
myRect.setFill(colorPicker.getValue());
System.out.println("Function color = " + colorPicker.getValue());
}
}