Chr*_*ris 7 java javafx javafx-8
我有一个SimpleIntegerProperty并想从中派生出一个SimpleObjectProperty<Color>。
为此,我想象了一些机制,比如流和可选:
SimpleIntegerProperty intProp;
ObjectProperty<Color> colorProp = intProp.map(i -> convertIntToColor(i), c -> convertColorToInt(c));
Run Code Online (Sandbox Code Playgroud)
是否已经内置了一些东西,还是我真的需要自己推出它?
如果没有这样的东西,这似乎很奇怪,因为查看 的所有Bindings功能会让您强烈地感觉到该功能也应该存在。
谢谢!
不确定这是否是最好的方法,但这似乎可以使用Bindings.createObjectBinding:
@Test
public void test() {
SimpleIntegerProperty simpleIntegerProperty = new SimpleIntegerProperty(1);
ObjectBinding<Color> binding = Bindings
.createObjectBinding(() -> converToColor(simpleIntegerProperty.get()), simpleIntegerProperty);
System.out.println(binding.get());
binding.addListener(new ChangeListener<Color>() {
@Override
public void changed(ObservableValue<? extends Color> observable, Color oldValue, Color newValue) {
System.out.println(newValue);
}
});
simpleIntegerProperty.set(2);
}
private Color converToColor(int i) {
switch (i) {
case 1:
return Color.RED;
case 2:
return Color.BLUE;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |