Spinner <Integer>绑定到IntegerProperty

See*_*ain 6 java javafx-8

我想使用FX8 Spinner控件,但我想将源绑定到IntegerProperty

int MIN = 0;
int MAX = 5000;
int STEP = 500;
IntegerProperty integerProperty = new SimpleIntegerProperty();

Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);
Run Code Online (Sandbox Code Playgroud)

我知道绑定是通过绑定到valuePropertyValue Factory中设置的.然而,这种希望Property<Integer>,我无法找到一个方法来之间进行转换IntegerPropertyProperty<Integer>.

显然下面会生成一个编译器错误:

spinner.getValueFactory().valueProperty().bindBidirectional(integerProperty);
Run Code Online (Sandbox Code Playgroud)

我是否需要为两个方向手动分配更改侦听器?当然有一个更简洁的解决方案使用valueProperty,这不可能是一个无法预料的情况.

VGR*_*VGR 6

您可以包装ObjectProperty:

ObjectProperty<Integer> objectProp = new SimpleObjectProperty<>(MIN);
IntegerProperty integerProperty = IntegerProperty.integerProperty(objectProp);

Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);

spinner.getValueFactory().valueProperty().bindBidirectional(objectProp);
Run Code Online (Sandbox Code Playgroud)

IntegerProperty.integerProperty创建一个双向连接到它包装的属性的属性.

  • @SeeMoreGain,请分享您解决问题的方法的代码片段? (2认同)