Baumstrukturmodell -> Darstellung als TreeView

White_Fox

Top Contributor
Guten Morgen allerseits

Folgendes: Ich hab (schon vor einiger Zeit) eine Baumstruktur gebaut, die ein Modell ihrer selbst erzeugt. Dieses Modell besteht aus einer ArrayList mit ModelItems, die u.a. ihren Parent enthalten. So in etwa:

Java:
public class ItemModel{
    final ItemModel parent;
    final String name;
    
    public ItemModel getParent(){return parent;}
    
    public String getName(){return name;}
}

Als ich das geplant hab hatte ich schon eine Idee, wie ich daraus wieder eine Baumstruktur rekonstruieren kann. Dummerweise hab ich das mittlerweile wieder vergessen. Irgendwas mit rekursiven Methodenaufrufen, soviel weiß ich noch.
Jetzt möchte ich diesen Baum in einer TreeView darstellen.

Hat jemand eine pfiffige Idee, wie ich das bewerkstelligen kann?
 

White_Fox

Top Contributor
Danke...aber so richtig hilft mir das leider nicht.

Ich will das tatsächlich als TreeView in JavaFX darstellen. Das Problem ist: wie ordne ich die Elemente an? Ich krieg das nicht in einen Algorithmus gegossen.
 

Robat

Top Contributor
Hmm so sollte das eigentlich funktionieren. Oder hab ich dich etwa immer noch missverstanden?
Java:
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {

        List<ItemModel> childElements = new ArrayList<>();

        ItemModel a3 = new ItemModel("A3", new ItemModel("A2", new ItemModel("A1", null)));
        ItemModel b2 = new ItemModel("B2", new ItemModel("B1", null));
        ItemModel c4 = new ItemModel("C4", new ItemModel("C3", new ItemModel("C2", new ItemModel("C1", null))));

        /*
         * A1
         * \-A2
         *   \-A3
         *
         * B1
         * \-B2
         *
         * C1
         * \-C2
         *   \-C3
         *     \-C4
         */

        childElements.addAll(Arrays.asList(a3, b2, c4));

        TreeItem<ItemModel> parentItem = createTreeFromChildElements(childElements);

        TreeView<ItemModel> tree = new TreeView<>(parentItem);
        tree.setShowRoot(false);

        primaryStage.setScene(new Scene(tree));
        primaryStage.show();

    }

    class ItemModel {
        String name;
        ItemModel parent;
        ItemModel(final String name, final ItemModel parent) {
            this.name = name;
            this.parent = parent;
        }

        @Override
        public String toString() {
            return name;
        }
    }

    private TreeItem<ItemModel> createTreeFromChildElements(final List<ItemModel> children) {
        final TreeItem<ItemModel> root = new TreeItem<>();
        children.stream().map(e -> createTreeFromChildElement(e, null)).forEach(root.getChildren()::add);
        return root;
    }

    private TreeItem<ItemModel> createTreeFromChildElement(final ItemModel item, final TreeItem<ItemModel> parentTreeItem) {
        if(parentTreeItem == null) {
            return createTreeFromChildElement(item.parent, new TreeItem<>(item));
        }
        TreeItem<ItemModel> node = new TreeItem<>(item);
        node.getChildren().add(parentTreeItem);

        if(item.parent != null) {
            return createTreeFromChildElement(item.parent, node);
        }
        return node;
    }
}
 
X

Xyz1

Gast
Hallo White_Fox, etwas ähnliches hatte ich heute morgen gemacht:
vielleicht kannst Du etwas damit anfangen, es wird bereitgestellt durch Jitpack (siehe Readme) und liegt nicht im Maven Central:
Java:
EasyDefaultMutableTreeNode<String> root = new EasyDefaultMutableTreeNode<String>("Root");
root.addChild("a").addChild("b").addChild("c");
root.getChildAt(1).addChild("g").addChild("h").addChild("x");
System.out.println(root.toString());
System.out.println(root.convertToDefaultMutableTreeNode().getChildAt(1).getChildAt(2).toString());


Es hat eine Konvertierungsmethode nach javax.swing.tree.TreeNode aber ich kann auch noch eine Konvertierungs nach javafx.scene.control.TreeItem hinzufügen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
G Darstellung von Text auf MapContext von GeoTools Allgemeine Java-Themen 2
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
J Unicode Darstellung mit 5 chars Allgemeine Java-Themen 9
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
krgewb Darstellung bei Java-Update Allgemeine Java-Themen 8
O Darstellung von else if anweisung im struktogramm? Allgemeine Java-Themen 1
F Framework/Plugin für Tree-Darstellung in Graph Allgemeine Java-Themen 0
N Best Practice Flexible String-Darstellung Allgemeine Java-Themen 1
R Bibliothek für Darstellung von char auf 5x7 Dot-Matrix Allgemeine Java-Themen 2
G REST- Object darstellung Allgemeine Java-Themen 6
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
K Javamail:Probleme mit der Darstellung von Umlaute in Subject Allgemeine Java-Themen 15
D Problem bei der Darstellung einer trigonometrischen Funktion Allgemeine Java-Themen 2
O Problem bei Darstellung der Laufzeit eines Programms Allgemeine Java-Themen 3
C Swing JComboBox - Problem mit der Darstellung des Inhaltes Allgemeine Java-Themen 9
I Teilweise falsche Darstellung jap. Zeichen im JEditorPane mit RTFEditorKit aus RTF-Datei Allgemeine Java-Themen 5
B Darstellung bei verschieden win Systeme spinnt! Allgemeine Java-Themen 2
C Darstellung der Liste bei vielen Daten extrem langsam Allgemeine Java-Themen 11
X CATIA Konstuktionsdaten Import- Darstellung Allgemeine Java-Themen 4
S Darstellung einer dynamischen Matrix Allgemeine Java-Themen 9
J Encoding und Gewinnung von Zeichen aus der Hexa-Darstellung Allgemeine Java-Themen 6
GilbertGrape Darstellung wie in einem Diff-Programm Allgemeine Java-Themen 8
E Hexa-Darstellung Allgemeine Java-Themen 5
M Darstellung von Brüchen Allgemeine Java-Themen 3
B Darstellung von Objekten dauern unterschiedlich lang ! Allgemeine Java-Themen 5
H Unicode Darstellung in Java, spezielles Zeichen gesucht Allgemeine Java-Themen 4
D Double: Grenzen und Darstellung Allgemeine Java-Themen 7
S Verzeichnisstruktur ohne TreeView Allgemeine Java-Themen 3
B ListView / TreeView - ContextMenu? Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben