M
MeinerEiner_80
Servus zusammen!
Wie der Titel schon sagt, hab ich ein Problem beim Abspeichern eines JTree, genauer gesagt eines Treemodel.
Der Baum sieht bei mir folgendermassen aus:
Füge ich der Wurzel nun einen neuen DefaultMutableTreeNode hinzu, funktioniert das Abspeichern ohne Probleme.
Füge ich stattdessen aber eine Instanz der Klasse( welche später noch erweitert wird):
hinzu, kommt es zu folgender Fehlermeldung beim Abspeichern:
Ich bin da ein wenig ratlos. Hat jemand ne Idee woran das liegen könnte?
*grüssle*
MeinerEiner
Wie der Titel schon sagt, hab ich ein Problem beim Abspeichern eines JTree, genauer gesagt eines Treemodel.
Der Baum sieht bei mir folgendermassen aus:
Code:
package GUI;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BonusTree{
DefaultTreeModel treeModel;
BonusTreeListener btl;
/**
* Liest die als XML-File vorhandenen Daten des Treemodels aus der Datei
* "BonusListe" aus, oder, falls die Datei nicht vorhanden ist
* erstellt ein neues Treemodel mit einem DefaultMutableTreeNode als Wurzel
* @return eine Instanz des BonusTree
*/
public BonusTree() {
super(createModel());
treeModel = (DefaultTreeModel)this.getModel();
btl = new BonusTreeListener();
treeModel.addTreeModelListener(btl);
this.setEditable(true);
private static DefaultTreeModel createModel() {
try{
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(
new FileInputStream(Pfad)));
DefaultTreeModel treeModel =(DefaultTreeModel)d.readObject();
d.close();
return treeModel;
}
catch (FileNotFoundException e) {
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("new Root");
DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
return treeModel;
}
}
void saveNodes(){
try{
XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream(Pfad)));
e.writeObject(treeModel);
e.flush();
e.close();
}
catch(IOException e){e.printStackTrace();}
}
}
Füge ich stattdessen aber eine Instanz der Klasse( welche später noch erweitert wird):
Code:
package GUI;
import javax.swing.tree.DefaultMutableTreeNode;
public class BonusNode extends DefaultMutableTreeNode {
public BonusNode(String anbieter){
super(anbieter);
}
}
Code:
java.lang.InstantiationException: GUI.BonusNode
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement DefaultMutableTreeNode.add(BonusNode);
Continuing ...
*grüssle*
MeinerEiner