Hallo Leute!
Folgendes Problem:
Habe eine JComboBox, die sich immer die letzten 10 Einträge merkt (ist editable). Wenn allerdings die Applikation neu gestartet wird sind die allerdings wieder weg. Darum möchte ich diese Einträge speichern und beim nächsten Aufruf laden.
Da laut Doku:
Die Serialisierung dieses Objectes in den nächsten Swing Releases nicht mehr unterstützt wird, hab ich mich also auf den XMLEncoder/XMLDecoder gestürzt.
Wenn ich also meine JComboBox als XML-Datei abspeichern will, mit:
Dann erhalt ich folgendes Ergebnis:
Das Problem ist jetzt, daß die "kb.DropDownObject" Objecte nicht mit abgespeichert werden. Das heißt, beim nächsten Laden steht für jedes "kb.DropDownObject" ein leerer Eintrag in der ComboBox.
Wie kann man dieses Problem lösen.
Danke!
Craven
Folgendes Problem:
Habe eine JComboBox, die sich immer die letzten 10 Einträge merkt (ist editable). Wenn allerdings die Applikation neu gestartet wird sind die allerdings wieder weg. Darum möchte ich diese Einträge speichern und beim nächsten Aufruf laden.
Da laut Doku:
Code:
Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder.
Die Serialisierung dieses Objectes in den nächsten Swing Releases nicht mehr unterstützt wird, hab ich mich also auf den XMLEncoder/XMLDecoder gestürzt.
Wenn ich also meine JComboBox als XML-Datei abspeichern will, mit:
Code:
private void save_JComboBox() {
XMLEncoder e = null;
try {
e = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(HOME.concat("/Test.xml"))));
e.writeObject(jComboBox);
} catch (FileNotFoundException fnfe) {
// TODO Auto-generated catch block
fnfe.printStackTrace();
}
e.close();
}
Dann erhalt ich folgendes Ergebnis:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2_03" class="java.beans.XMLDecoder">
<object class="javax.swing.JComboBox">
<void property="preferredSize">
<object class="java.awt.Dimension">
<int>31</int>
<int>20</int>
</object>
</void>
<void property="editable">
<boolean>true</boolean>
</void>
<void property="editor">
<void property="item">
<object id="DropDownObject0" class="kb.DropDownObject"/>
</void>
</void>
<void property="model">
<void property="selectedItem">
<object idref="DropDownObject0"/>
</void>
<void method="addElement">
<object class="kb.DropDownObject"/>
</void>
<void method="addElement">
<object class="kb.DropDownObject"/>
</void>
<void method="addElement">
<object class="kb.DropDownObject"/>
</void>
<void method="addElement">
<object class="kb.DropDownObject"/>
</void>
<void method="addElement">
<object class="kb.DropDownObject"/>
</void>
<void method="addElement">
<object idref="DropDownObject0"/>
</void>
</void>
<void property="renderer">
<void property="background">
<object class="javax.swing.plaf.ColorUIResource">
<int>255</int>
<int>255</int>
<int>255</int>
</object>
</void>
<void property="location">
<object class="java.awt.Point">
<int>-682</int>
<int>-17</int>
</object>
</void>
<void property="text">
<string>lcfd</string>
</void>
</void>
</object>
</java>
Das Problem ist jetzt, daß die "kb.DropDownObject" Objecte nicht mit abgespeichert werden. Das heißt, beim nächsten Laden steht für jedes "kb.DropDownObject" ein leerer Eintrag in der ComboBox.
Wie kann man dieses Problem lösen.
Danke!
Craven