JavaFX 8多个双向绑定

时间:2015-08-19 21:56:45

标签: binding javafx

我右边的边框包含一个TextField。该中心包含一个可拖动的StackPane。我正在尝试将stackpane的layoutX绑定到textfield。但是,由于我使用的是MVP,因此中间有一个模型(控制器)。

文本字段(称为'idTopX'来自FXML布局)具有与模型的绑定

idTopX.textProperty().bindBidirectional(model.topXProperty);

其中model.topXProperty定义为:

public StringProperty topXProperty = new SimpleStringProperty();

反过来,模型将其topXProperty绑定到可拖动窗格:

StringConverter<Number> converter = new NumberStringConverter();
Bindings.bindBidirectional(topXProperty, dragPane.xProperty, converter);

最后,可拖动窗格包含:

public DoubleProperty xProperty = new SimpleDoubleProperty();

使用链接到窗格layoutX的属性的相应getter和setter。

所以我有这个双向绑定的大链TextField&lt; - &gt;型号&lt; - &gt;可拖动的窗格&lt; - &gt; pane.layoutXProperty

在拖动窗格时可以正常工作,但是一旦文本字段被更改,我就会得到:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: Bidirectional binding failed, setting to the previous value

堆栈跟踪中的任何内容都没有指向我的消息来源,并且“隐藏”消息“绑定失败”,我抓着吸管。有什么建议?我也愿意接受更好的实施,因为我怀疑我的方法也可能不正确。

0 个答案:

没有答案