Spinner< Integer>绑定到IntegerProperty [英] Spinner<Integer> bind to IntegerProperty
问题描述
我想使用FX8 Spinner
控件,但是我想将源绑定到IntegerProperty
I want to use a FX8 Spinner
control, but I want to bind the source to an IntegerProperty
int MIN = 0;
int MAX = 5000;
int STEP = 500;
IntegerProperty integerProperty = new SimpleIntegerProperty();
Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);
我知道绑定是通过绑定到Value Factory中的valueProperty
来设置的.但是,这期望Property<Integer>
,并且我找不到在IntegerProperty
和Property<Integer>
之间进行转换的方法.
I understand the binding is set via binding to the valueProperty
in the Value Factory. However this expects Property<Integer>
and I cannot find a way to cast between IntegerProperty
and Property<Integer>
.
显然,以下内容会生成编译器错误:
Obviously the below generates a compiler error:
spinner.getValueFactory().valueProperty().bindBidirectional(integerProperty);
我是否需要为两个方向手动分配变更侦听器?当然,有一种使用valueProperty
的更整洁的解决方案,这不可能不是不可预见的情况.
Do I need to manually assign a change listener for both directions? Surely there is a neater solution using the valueProperty
, this cannot have been an unforeseen situation.
推荐答案
您可以包装ObjectProperty:
You can wrap an 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);
IntegerProperty.integerProperty creates a property that's bidirectionally connected to the property it wraps.
这篇关于Spinner< Integer>绑定到IntegerProperty的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!