下面的代码只是创建一个带有ColorPicker
和一个按钮的简单框架,应该在按下按钮时将选择器的值更改为蓝色。
public class Demo extends Application {
@Override
public void start(Stage primaryStage) {
final ColorPicker picker = new ColorPicker();
picker.setValue(Color.RED);
Button btn = new Button("Change to blue");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
picker.setValue(Color.BLUE);
}
});
VBox root = new VBox();
root.getChildren().add(btn);
root.getChildren().add(picker);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
但是,按钮似乎没有做任何事情 - 进一步检查显示内部值确实更新,但这不会反映在选择器的视图中。
请注意,将颜色设置为红色的第一次调用工作得很好,但在它变得可见后,它似乎永远不会更新它的颜色。
这是预期的行为吗?这看起来非常奇怪。如果是这样,我该如何解决呢?到目前为止,我发现的唯一解决方法是创建一个新的ColorPicker
,设置它的颜色然后删除旧颜色并将新的颜色放到适当位置 - 但这对于一些应该是简单的事情来说似乎是一个可怕的解决方法任务,并且可能会破坏行为,因为旧选择器上的任何侦听器都不会被保留。