G
Guest
Gast
Hallo,
ich habe ein problem beim löschen von nodes bei meinem JTree.
So mache ich mein Jtree und so fülle ich ihn:
Dann habe ich noch eine Löschmethode
Jedoch wenn ich löschen will bekomme ich immer
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: node does not have a parent.
Was mache ich falsch?!
ich habe ein problem beim löschen von nodes bei meinem JTree.
Code:
treeModel = new DefaultTreeModel(rootNode);
tree = new JTree(treeModel);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setShowsRootHandles(true);
tree.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 2)
{
....
}
if(e.getButton() == MouseEvent.BUTTON3)
{
....
}});
tree.addMouseListener(new MouseAdapter() {
public void mouseOver(MouseEvent e) {
}
}
);
DefaultTreeCellRenderer rendererData = new DefaultTreeCellRenderer();
tree.setCellRenderer(rendererData);
tree.setCellRenderer(new MyRenderer2());
}
So mache ich mein Jtree und so fülle ich ihn:
Code:
private void fileSystemTree(File currentFile,DefaultMutableTreeNode currentNode )
{
File[] files = currentFile.listFiles();
if (files != null)
{ //Have the rights to list Files in this folder
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectory())
{// File is a Folder
DefaultMutableTreeNode folder = new DefaultMutableTreeNode( files[i].getName() );
currentNode.add(folder);
fileSystemTree(files[i], folder);
}
else
{
if(files[i].getName().contains(".txt"))
{
DefaultMutableTreeNode file = new DefaultMutableTreeNode( files[i].getName() );
currentNode.add(file);
}
else
{
// do nothing atm
}
}
}//for (int i = 0; i < files.length; i++)
if(currentFile != rootFile)
{
currentFile = currentFile.getParentFile();
}
else
{
// do anything
}
}//if (files != null)
}//fileSystemTree(File currentFile,DefaultMutableTreeNode currentNode )
Dann habe ich noch eine Löschmethode
Code:
public void delCurrentNode()
{
TreePath currentSelection = tree.getSelectionPath();
if (currentSelection != null)
{
DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
(currentSelection.getLastPathComponent());
MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
if (parent != null)
{
TreeNode[] path = currentNode.getPath();
String endPath = "C:\\DJTool" + (String)path[0].toString();
for(int i = 1; i < path.length; i++)
{
endPath = endPath + "\\" + path[i].toString();
File file = new File(endPath);
if(!file.isDirectory())
{
treeModel.removeNodeFromParent(currentNode);
//file.delete();
}
else
{
//TODO was passiert wenn zu löschende datei ein ordner ist?
System.out.println("Lösche ordner");
}
}
return;
}
}
}
Jedoch wenn ich löschen will bekomme ich immer
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: node does not have a parent.
Was mache ich falsch?!