JavaFX 2 TableView: Unterschiedliche Zellenfactory abhängig von den Daten in der Zelle

Ich versuche, die Tabellenansicht zu verwenden, um die Paare "key = value" zu rendern / bearbeiten. Die Tabelle soll also zwei Spalten haben: "key" und "value". Schlüssel ist nur eine normale Zeichenfolge, und Wert kann alles sein. Mein Problem ist, dass der Datentyp der Werte von Zeile zu Zeile unterschiedlich sein kann. Grundsätzlich wollte ich Kontrollkästchen für Boolesche Werte und Auswahlmöglichkeiten für Listen verwenden. Ich habe eine Möglichkeit gefunden, die gesamte Tabellenspalte mit Kontrollkästchen oder Auswahlmöglichkeiten zu rendern, indem die Zellenfactory festgelegt wurde:

final TableColumn<FieldValue, Field> valueColumn = new TableColumn<>("Value");
valueColumn.setCellFactory(new Callback<TableColumn<FieldValue, Field>, TableCell<FieldValue, Field>>() {
    @Override
    public TableCell<FieldValue, Field> call(final TableColumn<FieldValue, Field> column) {
        // if (value instanceof Boolean)
        return new CheckBoxTableCell<>();
    }
});

Ich muss jedoch in der Lage sein, eine Bedingung basierend auf dem Typ des Elements einzufügen, das in der Zelle gerendert werden soll. Mit anderen Worten, eine Zellenfactory auf Zellenebene und nicht auf Spaltenebene. Und das bewertet meinen Zustand zum Renderzeitpunkt. Ich habe noch keine Lösung dafür gefunden. Vielleicht hat jemand die richtigen Techniken, um diese Art von Rendering zu implementieren? Vielleicht ein Datagrid von Drittanbietern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage