Ich habe mich am JTree mal versucht.
Dank diesem Tutorual win ich auch schon weit gekommen. Mein Problem ist jetzt das ändern von Knoten.
Ich habe die Klassen aus dem vierten Teil überneommen und versucht sie so zu erweitern, dass ich Knoten umbennen kann. Dafür habe ich die Klasse ChangeableModel um folgende Klasse erweitert:
Desweiteren habe ich eine Klasse ChangeAction angelegt, die sich an den Klassen AddAction und RemoveAction orierntiert:
Jetzt zu meinem Problem:
Der Knoten wird wie erwartet ausgetauscht und es wird auch "changed" angezeigt. Problem ist, das das Icon nicht mehr stimmt, sowie die Linien vor dem Icon (bei Windows ist es ein + und ein - Zeichen). Wenn ich einen Knoten ändern wird immer das Icon für ein Blatt angezeigt.
Weiß jemand welchen fehler ich gemacht habe?
Und eine kleinere Frage: Wie bekommt man denn TreePath, zu dem Knoten den ich gerade geändert habne, so dass ich ihn über
auswählen kann?
Dank diesem Tutorual win ich auch schon weit gekommen. Mein Problem ist jetzt das ändern von Knoten.
Ich habe die Klassen aus dem vierten Teil überneommen und versucht sie so zu erweitern, dass ich Knoten umbennen kann. Dafür habe ich die Klasse ChangeableModel um folgende Klasse erweitert:
Java:
public void change(TreePath path, MutableTreeNode node) {
Object parent = path.getParentPath().getLastPathComponent();
Object child = path.getLastPathComponent();
int index = getIndexOfChild(parent, child);
((MutableTreeNode)parent).insert(node, index);
TreeModelEvent event = new TreeModelEvent(this, path.getParentPath(),
new int[] { index }, new Object[] { node });
for (TreeModelListener listener : listeners) {
listener.treeNodesChanged(event);
}
}
Desweiteren habe ich eine Klasse ChangeAction angelegt, die sich an den Klassen AddAction und RemoveAction orierntiert:
Java:
class ChangeAction extends TreeAction {
public ChangeAction(JTree tree, ChangeableModel model) {
super(tree, model);
}
@Override
protected void invoked() {
TreePath[] paths = tree.getSelectionPaths();
if (paths != null) {
tree.clearSelection();
for (TreePath path : paths) {
MutableTreeNode node = new MutableTreeNode("changed");
model.change(path, node);
}
}
}
}
Jetzt zu meinem Problem:
Der Knoten wird wie erwartet ausgetauscht und es wird auch "changed" angezeigt. Problem ist, das das Icon nicht mehr stimmt, sowie die Linien vor dem Icon (bei Windows ist es ein + und ein - Zeichen). Wenn ich einen Knoten ändern wird immer das Icon für ein Blatt angezeigt.
Weiß jemand welchen fehler ich gemacht habe?
Und eine kleinere Frage: Wie bekommt man denn TreePath, zu dem Knoten den ich gerade geändert habne, so dass ich ihn über
Java:
tree.addSelectionPath