# JavaFX TreeTable Scene Builder



## Nisha1323 (12. Nov 2014)

Hallo,

ich arbeite mit Scene Builder und Netbeans und möchte gerne meine TreeTable füllen. Die TreeTable hat ja die dazu passenden TreeTableColumns, ich verstehe nur nicht ganz, wie ich diese jetzt füllen kann (ich möchte die Tabelle gerne über die passenden BDO's, die ich auch schon habe aus der Datenbank befüllen lassen) aber anders als bei den normalen Table Columns funktioniert hier ja nicht die PropertyValueFactory.

Ich habe schon gegoogelt, aber irgendwie stehe ich auf dem Schlauch. In den Beispielen werden die TableTreeViews ja immer per Hand angelegt. Und ich verstehe allgemein nicht ganz wie das wie das ganze Prinzip der TreeTables funktioniert. In den Beispielen wird immer etwas als "root" festgelegt, das ist ja wohl die Variable, die im Baum "aufgeklappt" werden kann, ist das eine normale Spalte der Tabelle? Hat irgendjemand Tipp für ein gutes Tutorial in Combi mit dem Scene Builder?


----------



## Nisha1323 (12. Nov 2014)

Also bis jetzt habe ich das:


```
@FXML
private TreeTableView<Verb> treeTableView;
@FXML
private TreeTableColumn<Verb, String> column_Verb;

private void setTable() {

        liste_Verb = service.getAllVerb();

        column_Verb = new TreeTableColumn<Verb, String>("Verb");
        column_Verb.setCellValueFactory(new Callback<CellDataFeatures<Verb, String>, ObservableValue<String>>() {

            @Override
            public ObservableValue<String> call(CellDataFeatures<Verb, String> v) {

                v.getValue();
                return v.getValue().getValue().getTypProperty();
            }
        });

        treeTableView.getColumns().add(column_Verb);
    }
```


ich bekomme keine Fehlermeldung, aber die Tabelle wird mit dem Inhalt der Spalte nicht gefüllt...


----------



## dzim (12. Nov 2014)

Dir fehlt noch die Verbindung der Tabellenzellen den Daten. Ich denke das geht am einfachsten über die PropertyValueFactory.

Code siehe hier: http://www.java-forum.org/awt-swing...bereiches.html?highlight=PropertyValueFactory (erweiterte Suche im Forum nach der Factory)

Wenn das nicht geht, weil deine Modellklassen vielleicht keine Properties haben, dann musst du nicht nur #setCellValueFactory aufrufen, sondern auch noch #setCellFactory... 

Bsp: 

```
public class MyTableCell extends TableCell<Verb, String> {
	@Override
	protected void updateItem(Verb item, boolean empty) {
		super.updateItem(item, empty);
		// do even more here
	}
}
```


----------



## Nisha1323 (12. Nov 2014)

Hmm das Problem ist, dass ich ja nicht mit derm TableView arbeite, sondern mit dem TreeTableView & da kann kriege ich immer eine Fehlermeldung bei der PropertyValueFactory.. Ich weiß, dass mir der Teil noch fehlt aber mein Problem ist, dass ich nicht weiß wie ich das ohne Propertyvaluefactory machen soll.... Ich habe auch normale Tabellen in meinem Programm, die ohne Probleme funktionieren, nur bei der TreeTableView scheint das anders zu laufen..


----------



## dzim (12. Nov 2014)

Ah sorry. Das hab ich überlesen. Hast du mal einfach versucht eine eigene CellFactory (also so ein TreeCell-, TableCell- oder-was-auch-immer-Callback) zu implementieren?


----------



## Nisha1323 (12. Nov 2014)

Nur den CallBack, der schon da drin steht. Bei dem Rest verstehe ich leider nicht so ganz was ich machen sollte, irgendwie durchblicke ich diese TreeTable-Struktur noch nicht ganz und im Internet findet man echt wenig hilfreiches... Also zumindest für mich wenig hilfreich :-/


----------



## dzim (12. Nov 2014)

Hm. Ist mir heute zu spät. Ich schau mal morgen irgendwann im Laufe des Tages rein. Wenn ich ein kleines Bsp. basteln sollte, poste ich es hier...


----------



## Nisha1323 (12. Nov 2014)

Das ist super, Danke


----------



## dzim (13. Nov 2014)

Zum einen scheint es mal Probleme mit den TreeTableColumn im FXML gegeben zu haben:
java 8 - FXML cellValueFactory for TreeTableColumn - Stack Overflow

Ob das mittlerweile behoben wurde, kann ich dir nicht sagen.

Ich stelle gerade fest, dass das Ganze schon recht komplex ist, um es mal eben nebenbei zu schreiben... 
Hast du schon mal das Tutorial von Oracle angeschaut?
https://docs.oracle.com/javase/8/javafx/user-interface-tutorial/tree-table-view.htm

Alles andere wäre jetzt zeittechnisch etwas zu Aufwendig für mich... Sorry.


----------

