JavaFX CellFactory und CellValueFactory

temi

Top Contributor
Ich möchte in einem TableView eine Spalte mit einer Combobox haben. Das geht zunächst relativ einfach, indem ich eine entsprechende CellFactory setze.
Java:
theCol.setCellFactory(ComboBoxTableCell.forTableColumn(comboData));
Die Daten für die Combobox stecken in einer entsprechenden Collection.
Java:
private final ObservableList<String> comboData = FXCollections.observableArrayList();
Allerdings funktioniert das so, nur für den Datentyp String, ich hätte aber gerne etwas in dieser Art:
Java:
private final ObservableList<MyType> comboData = FXCollections.observableArrayList();
Das funktioniert auch, wenn ich in MyType toString() entsprechend überschreibe, so dass das gewünschte Feld angezeigt wird. Aber das ist ja nicht die ganz feine Art. Wie sage ich der ComboBoxTableCell, welches Feld von MyType sie anzeigen soll?

Die CellValueFactory von "theCol" legt ja fest, welches Feld aus dem der TableView unterliegenden Datentyp angezeigt wird.
 

temi

Top Contributor
Ich denke, dass ich die Antwort gefunden habe.
Java:
theCol.setCellFactory(ComboBoxTableCell.forTableColumn(new StringConverter<MyType>() {
            @Override
            public String toString(MyType myType) {
                //
            }

            @Override
            public MyType fromString(String s) {
                //
            }
        }, comboData));
 

lam_tr

Top Contributor
Ich denke, dass ich die Antwort gefunden habe.
Java:
theCol.setCellFactory(ComboBoxTableCell.forTableColumn(new StringConverter<MyType>() {
            @Override
            public String toString(MyType myType) {
                //
            }

            @Override
            public MyType fromString(String s) {
                //
            }
        }, comboData));
Ja das hätte ich dir auch so vorgeschlagen :)
 

Ähnliche Java Themen


Oben