Hi,
ich habe ein Problem mit einem in einer Datei gespeicherten Tree - wenn ich diesen speichern möchte nachdem ich aus dem Tree einen Node lösche.
dazu habe ich eine del-methode:
und im Anschluss will ich den Tree dann speichern mit:
Das geht beim ersten Speichervorgang auch wunderbar. Wenn ich aber "SaveTree" ein zweites mal rufe wirft er folgende Exception :
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.tree.DefaultMutableTreeNode.getChildAt(Unknown Source)
at javax.swing.tree.VariableHeightLayoutCache.treeNodesRemoved(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.fireTreeNodesRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.nodesWereRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.removeNodeFromParent(Unknown Source)
at MySaveTree.delNode(MySaveTree.java:127)
at MySaveTree.access$6(MySaveTree.java:124)
at MySaveTree$3.actionPerformed(MySaveTree.java:64)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
ich habe ein Problem mit einem in einer Datei gespeicherten Tree - wenn ich diesen speichern möchte nachdem ich aus dem Tree einen Node lösche.
dazu habe ich eine del-methode:
Code:
private void delNode(){
MutableTreeNode selectedNode = (MutableTreeNode) tree.getLastSelectedPathComponent();
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.removeNodeFromParent(selectedNode);
}
Code:
public void SaveTree(){
try {
FileOutputStream fileOut =
new FileOutputStream(serializeFilename);
ObjectOutputStream out =
new ObjectOutputStream(fileOut);
out.writeObject(tree);
out.flush();
out.close();
} catch(IOException ioe) {
System.out.println("Error saving tree: " + ioe);
}
}
Das geht beim ersten Speichervorgang auch wunderbar. Wenn ich aber "SaveTree" ein zweites mal rufe wirft er folgende Exception :
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.tree.DefaultMutableTreeNode.getChildAt(Unknown Source)
at javax.swing.tree.VariableHeightLayoutCache.treeNodesRemoved(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.fireTreeNodesRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.nodesWereRemoved(Unknown Source)
at javax.swing.tree.DefaultTreeModel.removeNodeFromParent(Unknown Source)
at MySaveTree.delNode(MySaveTree.java:127)
at MySaveTree.access$6(MySaveTree.java:124)
at MySaveTree$3.actionPerformed(MySaveTree.java:64)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)