Servus,
also ich stehe vor einem größeren Problem. Ich hab bestimmte Daten und möchte diese automatisch in ein JTree einfügen lassen.
Ich habe eine Klasse "Kataloge" (Catalogs) in der es eine Liste mit Katalogen (Catalog) gibt. Jeder Katalog hat mehrere Aspekte (Aspect). Jeder Aspekt hat 4 verschiedene Eigenschaften (einfache Strings), darunter auch die Kategorie.
Nun soll in den Baum alle Kataloge eingefügt werden (1. Ebene). Den Grundknoten nenne ich einfach mal "Alle Kataloge". Und nun sollen alle Aspekte der jeweiligen Kataloge in den Baum eingeordnet werden, aber nicht gleich in die 2. Ebene, sondern in die 3. Ebene. Die 2. Ebene soll aus der Kategorie der Aspekte bestehen. Dabei sollen einfach alle Aspekte die die gleiche Kategorie (den gleichen cateogory String) haben an einem Knoten hängen der so heißt wie Ihre Kategorie.
Damit das Ganze etwas verständlicher wird hier der gesamte Sourcecode (alternativ kann man das ganze als Java Projekt am Ende es Posts runterladen).
Ich habe leider überhaupt kein Ansatz wie ich das MyTreeModel verändern sollte, ich lade beim erstellen des Models die (statisch erzeugten) Daten aus der Main Klasse. Jetzt hab ich die Daten, aber die muss ich ja jetzt einfügen ^^ Wie fang ich da an?
Main.java
Catalogs.java
Catalog.java
Aspect.java
also ich stehe vor einem größeren Problem. Ich hab bestimmte Daten und möchte diese automatisch in ein JTree einfügen lassen.
Ich habe eine Klasse "Kataloge" (Catalogs) in der es eine Liste mit Katalogen (Catalog) gibt. Jeder Katalog hat mehrere Aspekte (Aspect). Jeder Aspekt hat 4 verschiedene Eigenschaften (einfache Strings), darunter auch die Kategorie.
Nun soll in den Baum alle Kataloge eingefügt werden (1. Ebene). Den Grundknoten nenne ich einfach mal "Alle Kataloge". Und nun sollen alle Aspekte der jeweiligen Kataloge in den Baum eingeordnet werden, aber nicht gleich in die 2. Ebene, sondern in die 3. Ebene. Die 2. Ebene soll aus der Kategorie der Aspekte bestehen. Dabei sollen einfach alle Aspekte die die gleiche Kategorie (den gleichen cateogory String) haben an einem Knoten hängen der so heißt wie Ihre Kategorie.
Damit das Ganze etwas verständlicher wird hier der gesamte Sourcecode (alternativ kann man das ganze als Java Projekt am Ende es Posts runterladen).
Ich habe leider überhaupt kein Ansatz wie ich das MyTreeModel verändern sollte, ich lade beim erstellen des Models die (statisch erzeugten) Daten aus der Main Klasse. Jetzt hab ich die Daten, aber die muss ich ja jetzt einfügen ^^ Wie fang ich da an?
Main.java
Java:
package jtreetesting;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import jtreetesting.app.model.Aspect;
import jtreetesting.app.model.Catalog;
import jtreetesting.app.model.Catalogs;
import jtreetesting.app.model.MyTreeModel;
/**
*
* @author Sagattarii
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Alle Kataloge");
JTree tree = new JTree(new MyTreeModel(root));
JScrollPane scrollPane = new JScrollPane(tree);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static Catalogs getCatalogs() {
// Wir generieren ein paar Daten
Aspect aspect1a = new Aspect("1", "Bücher", "Herr der Ringe", "Ein tolles Buch!");
Aspect aspect1b = new Aspect("2", "Bücher", "Der kleine Hobbit", "Auch ein tolles Buch!");
Aspect aspect1c = new Aspect("3", "Filme", "Matrix", "Der Film zum Buch");
Aspect aspect1d = new Aspect("4", "CDs", "RocknRoll", "");
Aspect aspect1e = new Aspect("5", "CDs", "BritPop", "");
Aspect aspect1f = new Aspect("6", "Bücher", "Die Entdeckung der Welt", "Ein tolles Buch!");
Aspect aspect2a = new Aspect("1", "Filme", "Star Wars", "");
Aspect aspect2b = new Aspect("2", "Filme", "2001", "");
Aspect aspect2c = new Aspect("3", "Bücher", "Java for Beginners", "Gutes Java Buch");
// Liste für 1. Catalog
List<Aspect> aspects1 = new ArrayList<Aspect>();
aspects1.add(aspect1a);
aspects1.add(aspect1b);
aspects1.add(aspect1c);
aspects1.add(aspect1d);
aspects1.add(aspect1e);
aspects1.add(aspect1f);
// Liste für 2. Catalog
List<Aspect> aspects2 = new ArrayList<Aspect>();
aspects2.add(aspect2a);
aspects1.add(aspect2b);
aspects1.add(aspect2c);
Catalog catalog1 = new Catalog("Großer Katalog", aspects1);
Catalog catalog2 = new Catalog("Kleinerer Katalog", aspects2);
List<Catalog> catalogsList = new ArrayList<Catalog>();
catalogsList.add(catalog1);
catalogsList.add(catalog2);
Catalogs catalogs = new Catalogs(catalogsList);
return catalogs;
}
}
Catalogs.java
Java:
package jtreetesting.app.model;
import java.util.List;
/**
*
* @author Sagattarii
*/
public class Catalogs {
protected List<Catalog> catalogs;
public Catalogs(List<Catalog> catalogs) {
this.catalogs = catalogs;
}
public List<Catalog> getCatalogs() {
return catalogs;
}
}
Catalog.java
Java:
package jtreetesting.app.model;
import java.util.List;
/**
*
* @author Sagattarii
*/
public class Catalog {
protected String description;
protected List<Aspect> aspects;
public Catalog(String description, List<Aspect> aspects) {
this.description = description;
this.aspects = aspects;
}
public String getDescription() {
return description;
}
public List<Aspect> getAspects() {
return aspects;
}
}
Aspect.java
Java:
package jtreetesting.app.model;
/**
*
* @author Sagattarii
*/
public class Aspect {
protected String id;
protected String category;
protected String directive;
protected String description;
public Aspect(String id, String category, String directive, String description) {
this.id = id;
this.category = category;
this.directive = directive;
this.description = description;
}
public String getId() {
return id;
}
public String getCategory() {
return category;
}
public String getDirective() {
return directive;
}
public String getDescription() {
return description;
}
}
Java:
package jtreetesting.app.model;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import jtreetesting.Main;
/**
*
* @author Sagattarii
*/
public class MyTreeModel extends DefaultTreeModel {
Catalogs catalogs;
public MyTreeModel(TreeNode root) {
super(root);
catalogs = Main.getCatalogs();
}
}