我需要一些帮助,我试图用一些标签和文本字段绑定模型中对象的属性。
label1.textProperty().bind(myModel.getSelectedObject().getNameProperty());
在这种情况下getSelectedObject()
是 TableView 中的选定对象。不知何故,这并没有按预期工作。当模型的值改变时,标签不会改变。
我设法通过Bindings
帮助类解决了这个问题:
label1.textProperty().bind(Bindings.select(myModel.getSelectedObject(), "name"));
只有使用Bindings
帮助类,标签的文本才能正确绑定到对象的名称属性。
现在我试图通过双向绑定获得相同的结果。有人有什么想法吗?
如果我这样绑定它,它没有效果(与第一次代码剪断相同)
textField.textProperty().bindBidirectional(myModel.getSelectedObject().getNameProperty());
ChangeListener
用于SelectionModel
启用切换绑定。试试看。
tableView.getSelectionModel().selectedItemProperty().addListener((o, ov, nv) -> {
if (ov != null) textField.textProperty().unbindBidirectional(ov.nameProperty());
if (nv != null) {
textField.setDisable(false);
textField.textProperty().bindBidirectional(nv.nameProperty());
} else {
textField.setDisable(true);
textField.setText("");
}
});
笔记:
如果从TableView
的项目中删除所选项目,则将ChangeListner
删除的项目称为oldValue
而不是 null。所以不需要关心删除列表项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句