Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Java JTree aus/in XML nodes + ID
- Ersteller strohhaar
- Erstellt am
- Registriert
- Nov. 2009
- Beiträge
- 409
Code:
......
private JTree jtree;
private TreeModel treemodel;
public TestGui() {
......
jtree = new JTree();
getContentPane().add(new JScrollPane(jtree), BorderLayout.CENTER);
try {
treemodel=Pers.deSerialize(jtree).getModel();
} catch (Exception e) {
......
-und die Methode dazu:
Code:
public class Pers {
private List<TreeNode[]> expanded;
private JTree jtree;
private TreeModel model;
JTree deSerialize(JTree jtree) {
try {
XMLDecoder d = new XMLDecoder(new BufferedInputStream(new FileInputStream("tree.xml")));
jtree.setModel((TreeModel) d.readObject());
expanded = (List<TreeNode[]>) d.readObject();
d.close();
} catch (FileNotFoundException ex) {
}
return jtree;
}
void addNode(JTree jtree) {
this.jtree=jtree;
TreePath selectedPath = this.jtree.getSelectionPath();
//Knoten nicht selektiert
if (selectedPath == null) {
return;
}
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) selectedPath.getLastPathComponent();
DefaultMutableTreeNode newChild = new DefaultMutableTreeNode("neuer Knoten " + countNew++);
((DefaultTreeModel) this.jtree.getModel()).insertNodeInto(newChild, selectedNode, selectedNode.getChildCount());
TreePath newPath = selectedPath.pathByAddingChild(newChild);
this.jtree.setSelectionPath(newPath);
this.jtree.startEditingAtPath(newPath);
}
Zuletzt bearbeitet:
Rossie
Rear Admiral
- Registriert
- Dez. 2010
- Beiträge
- 5.137
Dann fasse ich mich kurz. Der Baum stellt üblicherweise Domain-Objekte dar, die als Teil Deiner Domänenschicht die Anwendungsdaten repräsentieren. In diesem Fall also Kategorien und die Elemente, die darin enthalten sind.
In der GUI bietest Du die Möglichkeit entweder Kategorien oder Elemente (Deine Wörter) anzulegen, fragst einen Namen dafür ab und fügst entsprechende Objekte in den Baum ein.
Beim Erstellen des Knotens wird eine neue Kategorie erstellt (Du musst natürlich vorher prüfen, dass diese nicht schon besteht) und in den Baum eingefügt:
Wenn Du Dich nicht mit XMLEncoder näher befassen möchtest, um die Wörter zu ignorieren, entferne vorm wegschreiben einfach alle Wörter aus dem Baum.
In der GUI bietest Du die Möglichkeit entweder Kategorien oder Elemente (Deine Wörter) anzulegen, fragst einen Namen dafür ab und fügst entsprechende Objekte in den Baum ein.
Code:
class Category{
private final String id;
private final String name;
public Category(String rId, String rName) {
id = rId;
name = rName;
}
getter/setter ...
public String toString() { return name; }
}
Beim Erstellen des Knotens wird eine neue Kategorie erstellt (Du musst natürlich vorher prüfen, dass diese nicht schon besteht) und in den Baum eingefügt:
Code:
Category category = new Category(name.toLowerCase(), name);
DefaultMutableTreeNode node = new DefaultMutableTreeNode(category);
Wenn Du Dich nicht mit XMLEncoder näher befassen möchtest, um die Wörter zu ignorieren, entferne vorm wegschreiben einfach alle Wörter aus dem Baum.
- Registriert
- Nov. 2009
- Beiträge
- 409
Hallo, Danke Dir! Wie serialisiere ich jetzt eig. alles inkl. ID?
Ich meine
wird bestimmt nicht ausreichen.
Ich meine
Code:
XMLEncoder o = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("tree.xml")));
o.writeObject(tree.getModel());
wird bestimmt nicht ausreichen.