Hallo,
Ik ben momenteel bezig met een klein projectje. Hierbij wil ik een Jtree maken, waarbij ik als 'input' een ArrayList heb die bestaat uit een Object Variabele. In deze variabele staat een naam, de naam van de parent (staat in dezelfde ArrayList) en een waarde. De Jtree leafs van de tree kunnen ook weer childeren hebben.
Ik wil dus uiteindelijk de volgende output in een JTree (het aantal variabele kan verschillen, in mijn huidige programma heb ik er 22, maar het moet ook met meer of minder kunnen):
+var1
-----+var2
------------+var4
----+-var3
Ik heb momenteel de volgende code, die het model voor de tree moet inladen:
Zoals ik al vermelde in de code loop ik dus vast op regel 29, als ik een child probeer te voegen bij een een parent die al in de root staat en dus eigenlijk zelf al een parent heeft.
De dingen die ik al heb geprobeerd:
- casten, dit leidt tot een melding: inconvertable types
- mijn breiwerk uit elkaar gehaald, maakte geen verschil
Als iemand weet hoe het moet oplossen of als ik helemaal verkeerd bezig ben, dan hoor ik dat graag. Alvast bedankt.
Ik ben momenteel bezig met een klein projectje. Hierbij wil ik een Jtree maken, waarbij ik als 'input' een ArrayList heb die bestaat uit een Object Variabele. In deze variabele staat een naam, de naam van de parent (staat in dezelfde ArrayList) en een waarde. De Jtree leafs van de tree kunnen ook weer childeren hebben.
Ik wil dus uiteindelijk de volgende output in een JTree (het aantal variabele kan verschillen, in mijn huidige programma heb ik er 22, maar het moet ook met meer of minder kunnen):
+var1
-----+var2
------------+var4
----+-var3
Ik heb momenteel de volgende code, die het model voor de tree moet inladen:
Java: Variabele.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public class Variabele { String naam; String parent; double waarde; public Variabele(String p_naam, String p_parent, double p_waarde) { naam = p_naam; parent = p_parent; waarde = p_waarde; } public String getNaam() { return naam; } public String getParent() { return parent; } public double getWaarde() { return waarde; } } |
Java: VarTreeNode.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| package programma.swing; import programma.lib.Variabele; import java.util.ArrayList; import javax.swing.tree.*; import javax.swing.JTree; public class VarTreeNode { public static JTree getTreeNode(ArrayList<Variabele> list) { ArrayList<DefaultMutableTreeNode> nodelist = new ArrayList<DefaultMutableTreeNode>(); JTree parent; nodelist.add(new DefaultMutableTreeNode(list.get(0).getAfkorting(), true)); //Maak root for (int k = 1; k < list.size(); k++) { nodelist.add(new DefaultMutableTreeNode(list.get(k).getAfkorting())); // zet alle variabele om naar TreeNodes } for (int k = 1; k < list.size(); k++) { String strparent = list.get(k).getParent(); // Haal de parent uit de variabele int index = -1; for (int i = 0; i < nodelist.size(); i++) { if (strparent.compareTo(nodelist.get(i).toString()) == 0) { index = nodelist.get(0).getIndex(nodelist.get(i)); //Deze regel is om te kijken of de parent al is toegevoegd aan de root if (index == -1) { //De parent staat nog niet in de root, voeg de child toe aan de parent nodelist.get(i).add(nodelist.get(k)); } else { //De parent staat al in de root, voeg de child toe aan de parent die al in de root staat ((nodelist.get(0)).getChildAt(index)).add(nodelist.get(k)); // Hier gaat het fout /* Ik krijg 'cannot find symbol' te zien. Als ik bij de lijst van methodes kijk die ik te zien krijg * als ik de punt neetzet na ((nodelist.get(0)).getChildAt(index)) staat add er ook niet bij. * Enkel de methodes van de klasse javax.swing.tree.TreeNode ipv de methodes van javax.swing.tree.DefaultMutableTreeNode * waar de methode add instaat. Hoe kan ik dit anders doen? */ } } } } parent = new JTree(new DefaultTreeModel(nodelist.get(0))); //Zet het zooitje in een JTree return parent; } } |
Zoals ik al vermelde in de code loop ik dus vast op regel 29, als ik een child probeer te voegen bij een een parent die al in de root staat en dus eigenlijk zelf al een parent heeft.
De dingen die ik al heb geprobeerd:
- casten, dit leidt tot een melding: inconvertable types
- mijn breiwerk uit elkaar gehaald, maakte geen verschil
Als iemand weet hoe het moet oplossen of als ik helemaal verkeerd bezig ben, dan hoor ik dat graag. Alvast bedankt.