我认为这不是一个难题,但我无法解决。基本上可以归结为:
我有一个TableView,其中填充了模型类Foo中的对象:
class Foo {
private StringProperty textColA;
private StringProperty textColB1;
private StringProperty textColB2;
// Getters, setters and properties left away
}
第一列只是从
textColA
StringProperty获取数据。另一方面,列B同时需要textColB1
和textColB2
的数据。是否可以创建某种形式来包装这两个属性? 最佳答案
当然。例如,要产生两个字符串之间的连接,且之间有一个空格,请执行
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());
但更通用的形式适用于两个属性的任意函数)。