I have a SimpleIntegerProperty
and want to derive a SimpleObjectProperty<Color>
from it.
For that I imagine some mechanism like with streams and optionals:
SimpleIntegerProperty intProp;
ObjectProperty<Color> colorProp = intProp.map(i -> convertIntToColor(i), c -> convertColorToInt(c));
Is there something built-in already or do I really need to roll this out on my own?
It would seems odd if there is no such thing because looking at all the power of Bindings
gives you the strong feeling that this feature should also be there.
Thanks!
Unsure if this is the best way, but this seems to work using 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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With