【发布时间】:2015-04-16 10:47:50
【问题描述】:
我正在编写一个代码,它可以从其他代码的一部分中获取一些布尔值,并相应地更改屏幕上某些圆圈的颜色。但是,我在尝试将布尔值绑定到颜色时遇到了问题。我最终得到了这个:
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;
}
};
}
}
});
- 但是对于我使用的 n 个变量,我必须重复 n 次。有其他方法可以实现吗?
【问题讨论】:
-
使用根据布尔值状态返回颜色的绑定(相对于在更改时创建和设置新的 Observable)顺便说一句,几乎不需要扩展 ObservableXXBase - 如果您坚持手动更改侦听器中的颜色,使用 SimpleXXProperty
并 设置 它的值