JavaFX:如何使表格单元格与另一个表格单元格的值相关联

时间:2015-07-02 09:29:49

标签: java uitableview javafx tableview javafx-8

我有一个由3 StringProperty组成的非常简单的模型,我们称之为property1property2property3。我在模型中定义了通常的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更新。但由于property1property2都没有更改,因此它不会对column1执行任何操作。我怎么能以某种方式强迫column1改变或不断地改变property3

感谢

1 个答案:

答案 0 :(得分:1)

tableColumn1.setCellValueFactory(t -> {
    MyModel myModelValue = t.getValue();
    return Bindings.when(myModelValue.property3().equals("something"))
        .then(myModelValue.property1())
        .otherwise(myModelValue.property2());
});