JavaFX将BooleanProperty绑定到Paint

Ayu*_*jee 2 binding javafx-8

我正在编写一个代码,该代码可以从其他代码的一部分中获取一些布尔值,并相应地更改屏幕上某些圆圈的颜色。但是,在尝试将布尔值绑定到颜色时遇到了问题。我结束了这个:

unit1.getNeuron().getWorkingProperty().addListener(new ChangeListener<Boolean>() {

        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (newValue == Boolean.FALSE) {
                controller.paint1 = new ObservableValueBase<Paint>() {

                    @Override
                    public Paint getValue() {
                        return Color.RED;
                    }
                };
            } else {
                controller.paint1 = new ObservableValueBase<Paint>() {

                    @Override
                    public Paint getValue() {
                        return Color.DODGERBLUE;
                    }
                };

            }
        }
    });
Run Code Online (Sandbox Code Playgroud)
  • 但是我必须为我使用的n个变量重复n次。有其他方法可以实现吗?

eck*_*kig 5

假设您要基于创建一个ObservableObjectValue<Paint>要切换的对象ObservableBooleanValue,那么Bindings您就是您的朋友:

final ObservableBooleanValue booleanCondition = unit1.getNeuron().getWorkingProperty();
final ObservableObjectValue<Paint> paintProperty = Bindings.when(booleanCondition).then(Color.RED).otherwise(Color.DODGERBLUE);
Run Code Online (Sandbox Code Playgroud)