JavaFX:如何使表格单元格取决于另一个表格单元格的值

Posted

技术标签:

【中文标题】JavaFX:如何使表格单元格取决于另一个表格单元格的值【英文标题】:JavaFX: How to make a Table Cell to be contigent to the value of another Table Cell 【发布时间】:2015-07-02 09:29:49 【问题描述】:

我有一个由 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 更新。但它不会为 column1 做任何事情,因为 property1property2 都没有改变。我怎样才能以某种方式强制 column1 更改或视情况听 property3 的更改

谢谢

【问题讨论】:

【参考方案1】:
tableColumn1.setCellValueFactory(t -> 
    MyModel myModelValue = t.getValue();
    return Bindings.when(myModelValue.property3().equals("something"))
        .then(myModelValue.property1())
        .otherwise(myModelValue.property2());
);

【讨论】:

好吧,你不得不承认java已经变得非常整洁了!谢谢,漂亮的答案,我忘记了这个when绑定功能

以上是关于JavaFX:如何使表格单元格取决于另一个表格单元格的值的主要内容,如果未能解决你的问题,请参考以下文章

ios swift - 表格视图单元格动态高度取决于设备

JavaFX 表格单元格格式

如何避免只有一个包含要悬停的表格的单元格?

JavaFX - 拖放 TableCell

Javafx:TableView根据行列获取特定表格单元格的图形节点

从表格中提取文本并比较单元格 - python docx