G
Guest
Gast
Mahlzeit,
ich habe da ein Problem mit meinem JTree.
Ich habe meinem JTree einen renderer zugewiesen zudem noch ein DefaultTreeModel.
nun habe ich die funktion add eingführt, die mir ein Node in meinen Tree einfügt.
das funktioniert einwandfrei, jedoch habe ich hier nun das problem, dass die Node die ich einfüge nun nichtmehr über den renderer richtig gesetzt wird. Also die gewählten icons usw. werden schon benutzt jedoch nicht richtig entschieden zw. ordner und file.
Das ist mein renderer
nun ja repaint vom tree habe ich schon probiert das bringt nichts.
Könnte mir da einer helfen, dass eben der tree beim einfügen einer node die node richtig anzeigt?
Würde ja schon reichen wenn er es einfach beim einfügen immer wieder neuzeichnen würde...
Aber repaint vom tree funktioniert nicht.
ich habe da ein Problem mit meinem JTree.
Ich habe meinem JTree einen renderer zugewiesen zudem noch ein DefaultTreeModel.
nun habe ich die funktion add eingführt, die mir ein Node in meinen Tree einfügt.
das funktioniert einwandfrei, jedoch habe ich hier nun das problem, dass die Node die ich einfüge nun nichtmehr über den renderer richtig gesetzt wird. Also die gewählten icons usw. werden schon benutzt jedoch nicht richtig entschieden zw. ordner und file.
Code:
class MyRenderer extends DefaultTreeCellRenderer
{
Icon _icon = new ImageIcon("C:\\Unbenannt.GIF");
Icon ordner = new ImageIcon("C:\\ordner.gif");
public MyRenderer() {
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
if (leaf && isFolder(value))
{
setIcon(_icon);
} else
{
setIcon(ordner);
}
return this;
}
protected boolean isFolder(Object value) {
String endPath = null;
DefaultMutableTreeNode node =
(DefaultMutableTreeNode)value;
endPath = (String)PropertiesGUI.hits.get(node.toString());
if(endPath == null)
{
//is directory
return false;
}
else
{
//is file
return true;
}
}
}
Das ist mein renderer
Code:
treeModel = new DefaultTreeModel(rootNode);
dataTree = new JTree(treeModel);
dataTree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
dataTree.setShowsRootHandles(true);
..
..
..
public void addObject(String name)
{
DefaultMutableTreeNode parentNode = null;
TreePath parentPath = dataTree.getSelectionPath();
parentNode = (DefaultMutableTreeNode)
(parentPath.getLastPathComponent());
DefaultMutableTreeNode childNode =
new DefaultMutableTreeNode(name);
treeModel.insertNodeInto(childNode , parentNode , parentNode.getChildCount());
}
nun ja repaint vom tree habe ich schon probiert das bringt nichts.
Könnte mir da einer helfen, dass eben der tree beim einfügen einer node die node richtig anzeigt?
Würde ja schon reichen wenn er es einfach beim einfügen immer wieder neuzeichnen würde...
Aber repaint vom tree funktioniert nicht.