我在JavaFX中的GUI上有一個組合框。 該組合框是由一個複雜類型元素:對象和SimpleIntegerProperty之間的綁定
public class DureeChoiceBoxElement extends ObservableValueBase<DureeChoiceBoxElement> {
private IntegerProperty duree;
@Override
public String toString() {
return duree.get() + " an";
}
}
我要地圖(或綁定)與我的模型選擇的複雜元素包含簡單類型:
public class Pel {
private IntegerProperty duree = new SimpleIntegerProperty(1);
public Property<Number> dureeProperty() {
return duree;
}
public void setDuree(Integer duree) {
this.duree.setValue(duree);
}
public Integer getDuree() {
return duree.getValue();
}
}
怎麼辦它呢?
我在控制器中試圖用:
public class PelController {
@FXML
private ChoiceBox<DureeChoiceBoxElement> duree;
//etc..
pel.dureeProperty().bind(createElapsedBindingByBindingsAPI2(duree.getValue()));
/*
* @return an ObjectBinding of immutable TimeElapsed objects for the player
*/
private ObjectBinding<Property<Number>> createElapsedBindingByBindingsAPI2(
final DureeChoiceBoxElement dureeChoiceBoxElement) {
return Bindings.createObjectBinding(new Callable<Property<Number>>() {
@Override
public IntegerProperty call() throws Exception {
return dureeChoiceBoxElement.dureeProperty();
}
}, dureeChoiceBoxElement.dureeProperty());
}
}
但它不工作(甚至沒有編譯)。我想說的是:「將這個簡單的屬性綁定到這個複雜的對象,並調用我通過名爲」createElapsedBindingByBindingsAPI2(..)「的方法給出的方法。這就是窮人.... 任何幫助,請:)
Rela特德問題(以不同的解決方案的方法,但可能有所幫助):http://stackoverflow.com/questions/34506662/javafx-combobox-binding – Itai
有人建議手動編寫實現更改監聽器的綁定。我以高級別綁定的方式指望JavaFX的強大功能。代碼越少越好! –