我认为这不是一个难题,但我无法解决。基本上可以归结为:

我有一个TableView,其中填充了模型类Foo中的对象:

class Foo {
    private StringProperty textColA;
    private StringProperty textColB1;
    private StringProperty textColB2;

    // Getters, setters and properties left away
}


第一列只是从textColA StringProperty获取数据。另一方面,列B同时需要textColB1textColB2的数据。是否可以创建某种形式来包装这两个属性?

最佳答案

当然。例如,要产生两个字符串之间的连接,且之间有一个空格,请执行

TableColumn<Foo, String> someColumn = new TableColumn<>("Column");
someColumn.setCellValueFactory(cellData -> Bindings.createStringBinding(() ->
    cellData.getValue().getTextColB1() + " " + cellData.getValue().getTextColB2(),
    cellData.textColB1Property(), cellData.textColB2Property()));


(更简单地说,在这种情况下,您可以

someColumn.setCellValueFactory(cellData ->
    cellData.getValue().textColB1Property().concat(" ")
        .concat(cellData.getValue().textColB2Property());


但更通用的形式适用于两个属性的任意函数)。

09-26 11:34