我有一个非常简单的模型,由3个StringProperty
组成,我们称它们为property1
,property2
和property3
。我已经在模型中定义了常用的get/set/property
方法。我现在使用TableView
来显示其中一些属性。 Column模型定义如下
TableColumn<MyModel, String> tableColumn1 = new TableColumn<MyModel, String>("display 1");
TableColumn<MyModel, String> tableColumn2 = new TableColumn<MyModel, String>("display 2");
现在TableColumn遵循使用链接到模型属性之一的单元格值工厂的模式。
tableColumn1.setCellValueFactory((t)-> {
MyModel myModelValue = ((MyModel)t.getValue());
return myModelValue.getProperty3().equals("something") ? property1():property2();
});
tableColumn2.setCellValueFactory((t)-> property3());
现在的问题如下。如果在执行过程中某处更改
property3
,它将正确触发表的column2中的更改以及单元格的UI更新。但由于property1
和property2
均未更改,因此它对column1无效。我如何以某种方式强制column1更改或视听property3
的更改谢谢
最佳答案
tableColumn1.setCellValueFactory(t -> {
MyModel myModelValue = t.getValue();
return Bindings.when(myModelValue.property3().equals("something"))
.then(myModelValue.property1())
.otherwise(myModelValue.property2());
});