2016-08-12 12 views
0

これはそれほど難しい問題ではないと思いますが、私はその周りに頭を浮かべることはできません。 Basicllyそれはこれに降り:私はモデルFooクラスのオブジェクトが移入されTableViewを持ってJavaFX - TableView - 複数のプロパティのテキストをセルに埋め込む

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

    // Getters, setters and properties left away 
} 

最初の列はちょうどそれがtextColA StringPropertyからのデータです取得します。一方、列BはtextColB1textColB2の両方のデータが必要です。これら2つをラップする何らかの種類のプロパティを作成することは可能ですか?

答えて

3

例えば、

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

を行い、間にスペースを持つ2つの文字列の連結を生成するために(それ以上は、単にこの特定のケースでは、あなたは

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

を行うことができますが、より一般的な形式は、のために動作します2つの特性の任意の関数)。

+0

ありがとう、ちょうど私が必要としたもの。私は 'setCellValueProperty'ではなく' setCellValueFactory'を意味すると思います。 –

+1

はい、もちろんです。一定。 –

関連する問題