# JCheckbox abfragen und serialisieren mit JAXB 2.0



## Jordan2K8 (12. Feb 2008)

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:


```
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


```
xmlencoder.writeObject(myColorCheckbox)
```



lesen der xml:


```
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?


----------



## Wildcard (12. Feb 2008)

JAXB oder XMLEncoder? Um was geht es hier?


----------



## Jordan2K8 (12. Feb 2008)

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


```
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 (12. Feb 2008)

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.


----------



## Jordan2K8 (12. Feb 2008)

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:


```
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 (12. Feb 2008)

Die ComboBox ist doch wohl nur eine View auf ein Modell, oder?


----------



## Jordan2K8 (12. Feb 2008)

Wildcard hat gesagt.:
			
		

> Die ComboBox ist doch wohl nur eine View auf ein Modell, oder?



öhm ja was willst mir damit sagen?  ???:L


----------



## Wildcard (12. Feb 2008)

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?


----------



## Jordan2K8 (12. Feb 2008)

Wildcard hat gesagt.:
			
		

> Jordan2K8 hat gesagt.:
> 
> 
> 
> ...



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


----------



## Wildcard (12. Feb 2008)

Das soll keine Antwort sein, ich versuche die Situation zu verstehen.


----------



## Jordan2K8 (12. Feb 2008)

Wildcard hat gesagt.:
			
		

> Das soll keine Antwort sein, ich versuche die Situation zu verstehen.


Wie würdest du mit JAXB den Inhalt einer JCB serialisieren?


----------



## Wildcard (12. Feb 2008)

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.


----------



## Jordan2K8 (12. Feb 2008)

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 (12. Feb 2008)

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


----------



## Jordan2K8 (13. Feb 2008)

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?


----------



## Jordan2K8 (16. Feb 2008)

kann denn keiner helfen?


----------

