2016-08-12 3 views
0

Ich denke, das ist kein so schweres Problem, aber ich kann mich nicht damit abfinden. Basiclly wird es so weit nach unten:JavaFX - TableView - Zelle mit Text aus mehreren Eigenschaften füllen

ich ein TableView habe, die mit Objekten aus der Modellklasse Foo bevölkert ist:

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

    // Getters, setters and properties left away 
} 

Die erste Spalte nur erhält seine Daten von dem textColA String. Spalte B hingegen benötigt beide Daten von textColB1 und textColB2. Ist es möglich, eine Art von Eigenschaft zu erstellen, die diese beiden umschließt?

Antwort

3

Sicher. Um zum Beispiel eine Verknüpfung der beiden Strings mit einem Raum zwischen, tun

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

(einfacher in diesem besonderen Fall zu produzieren, könnten Sie

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

tun, aber die allgemeinere Form arbeiten für willkürliche Funktionen der beiden Eigenschaften).

+0

Danke, genau was ich brauchte. Ich denke, Sie meinen 'setCellValueFactory' anstelle von' setCellValueProperty'. –

+1

Ja, natürlich. Fest. –

Verwandte Themen