JavaFX: ColorPicker каждый раз возвращает одно и то же значение - PullRequest
0 голосов
/ 26 мая 2019

Итак, я пытаюсь заполнить мой прямоугольник палитрой цветов, но он не работает. Я делаю это так:

@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());
    }

}
...