我想双向绑定color
属性r
,g
,b
字段以及ColorPicker。这就是我所拥有的:
private IntegerProperty r = new SimpleIntegerProperty();
private IntegerProperty g = new SimpleIntegerProperty();
private IntegerProperty b = new SimpleIntegerProperty();
private ObjectProperty<Color> color = new SimpleObjectProperty<>();
ColorPicker colorPicker = new ColorPicker();
// Bind the colorPicker and 'color'
colorPicker.valueProperty().bindBidirectional(color);
现在我需要绑定color
并将其拆分为r
,g
,b
。我知道我可以从这样的事情开始(单向):
color.bind(Bindings.createObjectBinding(
() -> Color.rgb(r.get(), g.get(), b.get()),
r, g, b
));
但Java抛出异常无法设置绑定值。 还有其他方法可以做到这一点,还是应该使用听众? 谢谢!
答案 0 :(得分:1)
如果您希望所有这些属性保持一致,并希望能够独立更改其中任何属性(并根据需要更新其他属性),那么您只能使用双向绑定和侦听器(而不是单向绑定) ,不允许将绑定值设置为违反绑定的值。一种可能的方式是:
viewDidLoad