Hallo!
Folgendes Problem: Ich will einem vorhanden JTree Einträge hinzufügen, diesen "neuen" Status speichern, und bei einem späteren Programmstart wieder laden.
Allerdings sieht der Tree beim Neustart des Programms wieder genauso aus wie am Anfang-.-
Habe 2 Methoden geschrieben (save2 und load2), in denen die einzelnen benötigten Objekte serialisiert/deserialisiert werden.
Nachdem es mit einfachem laden der Objekte nicht geklappt hat, hab ich mal versucht, den alten Tree vorher zu löschen, dann die Objekte zu laden, und dann den Tree wieder neu zu erzeugen. Ergebnis ist allerdings ein leerer Tree mit der RootNode "Tabs".
Was mach' ich falsch?
Habe davon gelesen, dass "mutable" objects nicht serialisiert werde können. Stimmt das?
Normalerweise müsste es doch reichen, die RootNode vom Tree zu serialisieren, weil da alle anderen Einträge dranhängen.
Die Serialisierung der JComboBox (hier bei mir "combo") klappt immerhin schonmal.
Hoffe, dass mir jemand weiterhelfen kann.
Gruß c4m3l
Folgendes Problem: Ich will einem vorhanden JTree Einträge hinzufügen, diesen "neuen" Status speichern, und bei einem späteren Programmstart wieder laden.
Allerdings sieht der Tree beim Neustart des Programms wieder genauso aus wie am Anfang-.-
Habe 2 Methoden geschrieben (save2 und load2), in denen die einzelnen benötigten Objekte serialisiert/deserialisiert werden.
Nachdem es mit einfachem laden der Objekte nicht geklappt hat, hab ich mal versucht, den alten Tree vorher zu löschen, dann die Objekte zu laden, und dann den Tree wieder neu zu erzeugen. Ergebnis ist allerdings ein leerer Tree mit der RootNode "Tabs".
Was mach' ich falsch?
Habe davon gelesen, dass "mutable" objects nicht serialisiert werde können. Stimmt das?
Normalerweise müsste es doch reichen, die RootNode vom Tree zu serialisieren, weil da alle anderen Einträge dranhängen.
Die Serialisierung der JComboBox (hier bei mir "combo") klappt immerhin schonmal.
Hoffe, dass mir jemand weiterhelfen kann.
Gruß c4m3l
Code:
public void save2()
{
try{
ObjectOutputStream objOut = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("test.ser")));
objOut.writeObject(root);
objOut.writeObject(songs);
objOut.writeObject(intlied);
objOut.writeObject(combo);
objOut.writeObject(modell);
objOut.close();
}
catch(IOException io){}
}
public void load2 ()
{
remove(t); // t ist der alte JTree
try{
ObjectInputStream objIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream("test.ser")));
root = (DefaultMutableTreeNode)objIn.readObject();
songs = (String[])objIn.readObject();
intlied = (String[])objIn.readObject();
combo = (JComboBox)objIn.readObject();
modell = (DefaultTreeModel)objIn.readObject();
objIn.close();
}
catch(IOException io){}catch(ClassNotFoundException cnfe){}
root = new DefaultMutableTreeNode("Tabs");
modell = new DefaultTreeModel(root);
DefaultTreeSelectionModel tsm = new DefaultTreeSelectionModel();
t = new JTree(modell);
t.setSelectionModel(tsm);
t.setRootVisible(true);
t.setDragEnabled(true);
t.setEditable(false);
add(t, BorderLayout.WEST);
t.updateUI();
modell.reload(root);
}