我在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的强大功能。代码越少越好! –