JCheckbox abfragen und serialisieren mit JAXB 2.0

Status
Nicht offen für weitere Antworten.
J

Jordan2K8

Gast
Hallo,

Ich habe eine extra Klasse mit attribten wie z.B. farbe, größe usw. Nun hat diese Klasse für jedes Attribut 2 methoden einmal get/set methode.

Wenn ich mit JAXB 2.0 Daten nach xml serialisieren will mache ich dies so:

Code:
JAXBContext jc = JAXBContext.newInstance(TemplateData.class);			
			Marshaller m = jc.createMarshaller();
		    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);			    
		    OutputStream os = new FileOutputStream( "test.xml" );
		    TemplateData object = new TemplateData();		    
		    
                   object.setFarbe(getColor.bla());
		 		    
		    m.marshal(object, os);

das ist alles klar usw. doch wenn ich den status einer JCheckBox serialisieren will, benötige ich ja kein JAXB dafür,

der xmlencoder reicht ja auch ala

Code:
xmlencoder.writeObject(myColorCheckbox)



lesen der xml:

Code:
try
		{
			XMLDecoder decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream("test.xml")));

			myColorCheckbox=(JCheckBox) decoder.readObject();

			decoder.close();
		} 
		catch (FileNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

im Konstruktor der GUI Klasse mit den JCheckboxen wird auch die XML datei deserialisiert dennoch wird die checkbox myColorCheckbox nicht "angehakt" angezeigt sprich hat keinen Haken. Wie schaffe ich es dass die GUI upgedated wird? Oder wie macht man das sonst?
 
J

Jordan2K8

Gast
Wildcard hat gesagt.:
JAXB oder XMLEncoder? Um was geht es hier?

nnaja was ich bisher so in der such rausfand ist, dass leute den xmlencoder benutzen um den kompletten inhalt einer Jcombobox abspeichern möchte bzw. sie speichern das objekt selbst ab.

Ich möchte die JCB einfach wieder xmldecoden, doch in der klasse wo ich die JCB encode steht ja ganz oben in der klasse ja bereits

Code:
privat JComboBox blaCB = new JComboBox();
von daher wenn ich blaCB decodiere wird das Objekt eine zeile drüber angezeigt (sprich nichts hat sich geändert, die jcombobox ist leer)


wenn ich das ganze mit JAXB machen würde bräuchte ich wieder 2 methoden getdatafromJCB/setdatafromJCB.

Und in diesen Methoden müsste ich die JCB in einer forschleife auslesen/einlesen. beim XMLencoder/decoder brauche ich das ja gar nicht?

Ich bin etwas vewirrt doch ein klitzekleines beispiel wie ich eine JCB mit inhalt decodiere mit dem xmldecoder in eine bestehende GUI würde mich interessieren. Ich habe z.B. eine GUi mit u.a. JCombobox und bei drücken auf den loadButton wird die xmldecodier methode auseführt und "lädt" den inhalt der JCB in das model der JCB oder es updatet die JCB. Je nachdem wie man das sieht.
 

Wildcard

Top Contributor
Im Prinzip ist es grober Unfug die ComboBox speichern zu wollen. Das Datenmodell ist interessant und dafür ist EMF oder JAXB sicherlich die bessere Alternative als der XMLEncoder.
 
J

Jordan2K8

Gast
Wildcard hat gesagt.:
Im Prinzip ist es grober Unfug die ComboBox speichern zu wollen. Das Datenmodell ist interessant und dafür ist EMF oder JAXB sicherlich die bessere Alternative als der XMLEncoder.

d.h. du würdest z.B. in der Datenklasse die aus/eingelesen wird z.B. eine ArrayList erstellen indem du alle daten einliest die du von der JCB ausgelesen hast? Und wenn die klasse dann serialisiert wird mache ich dies:

Code:
ArrayList  al = new ArrayList();


JAXBContext jc = JAXBContext.newInstance(TemplateData.class);			
			Marshaller m = jc.createMarshaller();
		    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);			    
		    OutputStream os = new FileOutputStream( "test.xml" );
TemplateData object = new TemplateData();		    
		    

for(int i =0; i < al.size() ; i++)

object.al.get(i);


 m.marshal(object, os);

Könnte man so das serialisieren der in die ArrayList eingelesenen Daten machen?
 

Wildcard

Top Contributor
Jordan2K8 hat gesagt.:
öhm ja was willst mir damit sagen? ???:L
Persistierung hat zunächst mal mit einem Datenmodell zu tun.
Ob Liste XY später von einer ComboBox (als eine mögliche View auf die Daten) dargestellt wird, sollte für die Frage der Persistierung also unerheblich sein.
Unter dieser Premisse verstehe ich deine Frage nicht:
d.h. du würdest z.B. in der Datenklasse die aus/eingelesen wird z.B. eine ArrayList erstellen indem du alle daten einliest die du von der JCB ausgelesen hast?
 
J

Jordan2K8

Gast
Wildcard hat gesagt.:
Jordan2K8 hat gesagt.:
öhm ja was willst mir damit sagen? ???:L
Persistierung hat zunächst mal mit einem Datenmodell zu tun.
Ob Liste XY später von einer ComboBox (als eine mögliche View auf die Daten) dargestellt wird, sollte für die Frage der Persistierung also unerheblich sein.
Unter dieser Premisse verstehe ich deine Frage nicht:
d.h. du würdest z.B. in der Datenklasse die aus/eingelesen wird z.B. eine ArrayList erstellen indem du alle daten einliest die du von der JCB ausgelesen hast?

Ich kann aus deiner Antwort nichts für mich gewinnbringendes herauslesen, das mich irgendwie weiterbringt. Hast du einen praktischen Tip, Vorgehensweise?
 

Wildcard

Top Contributor
Ich würde den Inhalt einer ComboBox gar nicht serialisieren, weil ich ein Datenmodell hätte und die ComboBox nur Daten aus diesem Modell vorgesetzt bekommt. Sie ist eine View auf ein Model.
 
J

Jordan2K8

Gast
Wildcard hat gesagt.:
Ich würde den Inhalt einer ComboBox gar nicht serialisieren, weil ich ein Datenmodell hätte und die ComboBox nur Daten aus diesem Modell vorgesetzt bekommt. Sie ist eine View auf ein Model.
Also würdest du das model der JCB serialisieren? was ich eigentlich meinte die ganze Zeit.
 

Wildcard

Top Contributor
Willst du mir jetzt erzählen das du ein JAXB Binding gemacht hast für lediglich ein ComboBox Model? :shock:
 
J

Jordan2K8

Gast
Wildcard hat gesagt.:
Willst du mir jetzt erzählen das du ein JAXB Binding gemacht hast für lediglich ein ComboBox Model? :shock:
bisher habe ich noch gar nichts gemacht hinsichtlich JCB. Wo ist denn das Problem? Ich fragte wie serialisiere ich den Inhalt einer JCombobox, wenns nicht über die xmlencoder class gehen soll wie du sagtest?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben