TreeTableView (cellFactory) - wie Daten in Spalten einfügen

Knoten

Mitglied
Sorry, ich bin nach wie vor blutiger Anfänger - aber das Thema ist leider JavaFX spezifisch, daher in dieser Rubrik.

Ich habe eine TreeTableView mit 2 Spalten.

Als Elemente der TreeTableView verwende ich Instanzen von MyTreeItem, was aus TreeItem abgeleitet wurde und bislang lediglich um die Eigenschaft "Beschreibung" (ein ganz normaler String) ergänzt wurde. (Ich will hier später noch deutlich mehr mit reinpacken, fange aber zunächst mit diesem simplen String an)

In der ersten Spalte soll ganz normal die Baumstruktur angezeigt werden - das klappt reibungslos.

In der zweiten Spalte möchte ich, dass der Text aus der "beschreibung" aus dem entsprechenden MyTreeItem angezeigt wird.

Die Anzeige der Daten in den Spalten erfolgt offenbar über eine CellValueFactory.
Hier steige ich komplett aus :(- das kapiere ich irgendwie null!
Hier fehlt mir das sogenannte Aha-Erlebnis!
Ich lese das immer wieder an verschiedensten Stellen durch und scheitere an Sachen wie "CallBack", Lambda oder Typen 'S' und 'T' (was auch immer damit gemeint ist, mal String , mal Typ, mal observable, egal wie, alles für mich kryptisch) und vielem, vielem anderen.

Für die erste Spalte habe ich einen Beispielcode aus dem Internet genommen, das klappt dann auch wunderbar.
Für die Spalte 2 bringe ich jedoch nichts eigenes zustande, außer einem statischen Universaltext (wie in meinem Beispielcode).

Kann mir jemand erklären, wie ich hier meine Strings "beschreibung" der MyTreeItem-Instanzen in die Spalte 2 hineinbekomme?
Einen Screenshot habe ich angehängt (direkt einbinden kann ich den leider nicht).

Und hier mein Code:

Unächst meine Klasse MyTreeItem, welche von TreeItem abgeleitet ist:
Java:
package treetest;

import javafx.scene.control.TreeItem;

public class MyTreeItem extends TreeItem {
    private String name="not inizialized";          // entspricht dem String von getValue()
    private String beschreibung="not initialized";  // soll in Spalte 2 des Treeview angezeigt werden

    public MyTreeItem() {
        this.setValue(name);
    }
  
    public void setName(String name) {
        this.name=name;
        this.setValue(name);
    }

    public String getName() {
        return this.name;
    }
  
    public void setBeschreibung(String beschreibung) {
        this.beschreibung=beschreibung;
    }

    public String getBeschreibung() {
        return this.beschreibung;
    }  
}

die ControllerKlasse:
Java:
package treetest;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;

public class FXMLDocumentController implements Initializable {
  
    @FXML
    private TreeTableView<String> ttv;
  
    public MyTreeItem[] ti = new MyTreeItem[100];
  
    @Override
    public void initialize(URL url, ResourceBundle rb) {

            // Tree-Elemente anlegen
        MyTreeItem root = new MyTreeItem();
        root.setName("Ebene01");

        ti[1] = new MyTreeItem();
        ti[1].setName("Ebene2-Element1");
        ti[1].setBeschreibung("Beschreibung1");

        ti[2] = new MyTreeItem();
        ti[2].setName("Ebene2-Element2");
        ti[2].setBeschreibung("Beschreibung2");
      
        ti[3] = new MyTreeItem();
        ti[3].setName("Ebene3-Element3");
        ti[3].setBeschreibung("Beschreibung3");

        ti[4] = new MyTreeItem();
        ti[4].setName("Ebene3-Element4");
        ti[4].setBeschreibung("Beschreibung4");

        ti[2].getChildren().addAll(ti[3], ti[4]);   // Elemente in Ebene 3 unter "Element2"
   
        root.getChildren().addAll(ti[1], ti[2]);    // Elemente unter dem Hauptknoten
      
    
            // Anlegen der Tree Table Spalten
        TreeTableColumn<String, String> column1 = new TreeTableColumn<>("Ebenen");
        column1.setPrefWidth(150);

        TreeTableColumn<String, String> column2 = new TreeTableColumn<>("Beschreibung");
        column2.setPrefWidth(300);
      

        column1.setCellValueFactory((TreeTableColumn.CellDataFeatures<String, String> param) -> {
            return new ReadOnlyStringWrapper(param.getValue().getValue());});

        column2.setCellValueFactory((TreeTableColumn.CellDataFeatures<String, String> param) -> {
            return new ReadOnlyStringWrapper("wie bekomme ich hier die 'Beschreibung' rein?");});
          
        ttv.setRoot(root);
        ttv.getColumns().addAll(column1, column2);      
      

        root.setExpanded(true);                          // root ist "ausgeklappt"
        ti[2].setExpanded(true);                         // element ist "ausgeklappt"
        ttv.getSelectionModel().select(0);               // selektiert die erste Zeile
     
    }  
  
}

und noch die FXML:
Java:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TreeTableView?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="419.0" prefWidth="466.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.141" fx:controller="treetest.FXMLDocumentController">
    <children>
        <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
      <TreeTableView fx:id="ttv" layoutX="33.0" layoutY="29.0" prefHeight="365.0" prefWidth="419.0" />
    </children>
</AnchorPane>

und die Hauptklasse:
Java:
package treetest;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class TreeTest extends Application {
  
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
      
        Scene scene = new Scene(root);
      
        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
  
}


Vielen Dank schon mal für die sagenhafte Hilfe hier!
 

Anhänge

  • screenshot.png
    screenshot.png
    34,2 KB · Aufrufe: 19
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JavaFX TreeTableView in Java7 portieren? AWT, Swing, JavaFX & SWT 5
C JavaFX TreeTableView aktualisieren AWT, Swing, JavaFX & SWT 10
G JavaFX TreeTableView und ProgressIndicator AWT, Swing, JavaFX & SWT 1
N JavaFX TreeTableView & Column Span AWT, Swing, JavaFX & SWT 5
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
missy72 JavaFX CellFactory deaktivieren, oder löschen AWT, Swing, JavaFX & SWT 2
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
temi JavaFX CellFactory und CellValueFactory AWT, Swing, JavaFX & SWT 2
L JavaFX TableColumns mit CellFactory setzen AWT, Swing, JavaFX & SWT 9
B TreeView cellFactory AWT, Swing, JavaFX & SWT 4
V JavaFX Zwei Dinge in einer CellFactory erledigen AWT, Swing, JavaFX & SWT 8
J CellFactory in Abhängigkeit von anderer Zelle AWT, Swing, JavaFX & SWT 4
M JavaFX CellFactory Best Practice AWT, Swing, JavaFX & SWT 1
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
B AWT Bot um Daten auf Website einzugeben und die Antwort zu bekommen AWT, Swing, JavaFX & SWT 2
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
S SWT In Listen den Einträgen Daten zuordnen AWT, Swing, JavaFX & SWT 2
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
D SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum AWT, Swing, JavaFX & SWT 4
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
M Swing Daten von JPanel zu JFrame senden AWT, Swing, JavaFX & SWT 13
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
M Trotz richtiger Daten, falsches Bild wird gezeichnet?! AWT, Swing, JavaFX & SWT 4
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
A Swing(Daten zugreifen) AWT, Swing, JavaFX & SWT 25
S JComboBox - veränderliche Daten AWT, Swing, JavaFX & SWT 6
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
W Daten auf Textfeld in anderer Klasse verwenden AWT, Swing, JavaFX & SWT 4
T Daten der gesamten Woche anzeigen AWT, Swing, JavaFX & SWT 2
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
H JList zeigt die Daten aus dem Array nicht an! AWT, Swing, JavaFX & SWT 13
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
B Swing JList Daten löschen AWT, Swing, JavaFX & SWT 13
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
A SWT: Daten in Raster mit Gitternetzlinien darstellen AWT, Swing, JavaFX & SWT 7
C Swing JTextField-Daten über mehrere Dialoge AWT, Swing, JavaFX & SWT 18
K TableModel Daten übergeben AWT, Swing, JavaFX & SWT 9
Milady Swing Änderung von Daten mit sql AWT, Swing, JavaFX & SWT 2
J Daten aus einer Textdatei in ArrayList holen AWT, Swing, JavaFX & SWT 9
X Swing Daten aus Vector ins TableModel ?? AWT, Swing, JavaFX & SWT 12
T Swing Liste von Daten anzeigen AWT, Swing, JavaFX & SWT 4
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
E JCombobox mit Daten aus DB füllen AWT, Swing, JavaFX & SWT 9
L Daten werden in JTable nicht angezeigt:( AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben