2016-03-07 17 views
3

我想使用一個FX8 Spinner控制,但我希望將源綁定到IntegerProperty微調<Integer>結合IntegerProperty

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

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

我理解的結合是通過在數值廠結合valueProperty設置。然而這期待Property<Integer>,我找不到在IntegerPropertyProperty<Integer>之間投射的方法。

顯然低於生成編譯器錯誤:

spinner.getValueFactory().valueProperty().bindBidirectional(integerProperty); 

我需要手動分配的變化偵聽兩個方向?當然,使用valueProperty有一個更好的解決方案,這不可能是一個無法預料的情況。

回答

4

你可以用一個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創建在雙向連接到它包裝的財產屬性。

+1

謝謝。我決定採取另一種方式幷包裝Spinner屬性,並從'IntegerProperty'中調用'bindBiDirectional'來綁定2個'IntegerProperty'對象(所以我不需要觸摸我正在使用的模型對象)。 – SeeMoreGain

+0

@SeeMoreGain,請分享你的方法來解決問題的代碼片段? – Buddha