Inhalt von JComboBox serialisieren nach XML ?

Hi,

ich würde den Wert aus den ComboBox einfach auslesen und mittels JDom in eine XML Datei schreiben.

War das dein Problem oder brauchst du zusätzl. Infos?

MfG
 
Ich habe schon mit JAXB angefangen daten wie Zustände einer jcombobox,radion button,check box auszulesen oder werte aus textfields/textarea auszulesen/saven und wieder zu laden. Alle diese attribute sind in der TemplateData Klasse definiert.

xml saven:

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.setSpaceBeforeLeftParagraph(Integer.valueOf(spaceBeforeLeftParagraphTF.getText()));
object.setSpaceBeforeText(Integer.valueOf(spaceBeforeTextTF.getText()));		   
object.setAlignment(alignmentCB.getSelectedItem().toString());		    

m.marshal(object, os);

Nun würde ich gerne wissen wie ich die strings aus einer JCombobox auslese bzw. meiner TemplateData Klasse hinzufüge? Ich habe schon versucht in der TD Klasse für jede Jcombobox eine Arraylist zu erstellen:

Code:
private ArrayList<String> bezeichnungAL = new ArrayList<String>();

doch das auslesen der jcombobox und einlesen der werte in einer forschleife in die Arraylist der TempalteData Klasse führt zu nichts, wird nichts gespeichert...

Code:
 for(int i = 0 ; i < bezeichnungCB.size() ; i++)
		    {
		    	object.setBezeichnungAL(bezeichnungCB.getItemAt(i).toString());		    	
		    }	
		    
		    m.marshal(object, os);

ich bekomme einen nullpointer naja erstmal würde ich gerne wissen wie ich .size() in einen int caste bzw. den rückgabewert?

.size() ist sowieso deprecated doch was ist die neue methode um die anzahl elemente einer jcombobox herauszufinden?
 
Zum EInen ist der Blick in die Doku ganz hilfreich:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComboBox.html

Da findest du auch für zukünftige Fragen passende Antworten:

ich bekomme einen nullpointer naja erstmal würde ich gerne wissen wie ich .size() in einen int caste bzw. den rückgabewert?

.size() ist sowieso deprecated doch was ist die neue methode um die anzahl elemente einer jcombobox herauszufinden?

Um die Anzahl der Elemente aus der Liste zu ziehen benutzt du getItemCount(), die liefert dir bereits einen int-Wert zurück, also musst du da nichts casten.

Allgemein zum Casten sind die Wrapper-Klassen wichtig:
http://www.galileodesign.de/openbook/javainsel5/javainsel08_001.htm#Rxx747java080010400029A1F018100

Nun würde ich gerne wissen wie ich die strings aus einer JCombobox auslese bzw. meiner TemplateData Klasse hinzufüge? Ich habe schon versucht in der TD Klasse für jede Jcombobox eine Arraylist zu erstellen:

Werte aus der ComboBox erhälst du entweder durch getSelectedItem() oder getSelectedIndex() wenn du nur den Indexwert des gewählten Eintrags haben möchtest.

Wie du die Werte in deine Template-Klasse bekommst kann ich dir nicht sagen, weil ich deine Klasse nicht kenne :rolleyes:

MfG
 
Wie du die Werte in deine Template-Klasse bekommst kann ich dir nicht sagen, weil ich deine Klasse nicht kenne :rolleyes:

wer wird denn quängeln ;-)

beispiel daten klasse: wie gesagt das serialisieren nach xml von textfields, areas etc geht alles... habe das anhängen bzw. adden des strings in die AL mit dem debugger verfolgt da stimmt auch alles, nur wirds nicht in der xml datei gespeichert ?

Code:
@XmlRootElement()
public class SettingsData implements Serializable
{

	private static final long serialVersionUID = 1L;

	
	private ArrayList<String> bezeichnungAL = new ArrayList<String>();
	
	
	public SettingsData()
	{		
	}

        // setXX()
        public void setBezeichnungAL(String bezeichnungAL)
       {
                // String an bezeichnungAL anhängen...
		this.bezeichnungAL.add(bezeichnungAL);
	}

}
 
Lass dir mal bevor du in XML exportierst den Inhalt der ArrayList auf deiner Konsole ausgeben:

Code:
for(int i = 0; i < bezeichnungAL.size(); i++){
       System.out.println(bezeichnungAL.get(i));
}

Wird da was ausgegeben bzw. das ausgegeben was du auch in der ComboBox gewählt hast?
Wenn ja liegt es wohl an deiner Methode zum Speichern als XML Datei. Dann solltest du evtl. mal den zusammenhängenden Code der Methode posten.

MfG
 
danke für die antwort, ich habe das ganze jetzt noc nicth getestet, doch der code den du willst steht alles in den posts darüber:

Hier lese ich z.B. die strings aus der jcombobox in das ArrayList ein:
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();	

for(int i = 0 ; i < bezeichnungCB.size() ; i++)
		    {
		    	object.setBezeichnungAL(bezeichnungCB.getItemAt(i).toString());		    	
		    }	
		    
		    m.marshal(object, os);

m.marshal(object, os);
Das ist der gleiche Code aber bereits schon oben gepostet wurde nur steht er jetzt besser im Zusammenhang.
 
danke für die antwort, ich habe das ganze jetzt noc nicth getestet, doch der code den du willst steht alles in den posts darüber

Schön, aber ich wollte eigentlich zumindest eine zusammenhängende Methode, damit ich seh wie du die ArrayListe mit dem Inhalt aus der ComboBox an die Methode übergibst, die die XML Datei erzeugt.

Das war von deinen Posts vorher nicht ersichtlich...

Bei deinem Problem weiter helfen kann ich dir bis Weilen trotzdem nicht, weil du mein Vorschlag vom vorherigen Post noch nicht berücksichtigt hast.

Wenn du das getan hast, haben wir einen Ansatz...

so long

MfG
 
Bei deinem Problem weiter helfen kann ich dir bis Weilen trotzdem nicht, weil du mein Vorschlag vom vorherigen Post noch nicht berücksichtigt hast.

so getan:

Code:
try
{ 
	JAXBContext jc = JAXBContext.newInstance(SettingsData.class);			
	Marshaller m = jc.createMarshaller();
	 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);			    
	
	 OutputStream os = new FileOutputStream("settings.xml");
	  SettingsData object = new SettingsData();	
		    
		    for(int i = 0 ; i < bezeichnungCB.getItemCount() ; i++ )
		    {
		    	object.setBezeichnungAL(bezeichnungCB.getItemAt(i).toString());
		    }	
		    
		    for(int i = 0; i < object.getBezeichnungAL().size(); i++)
		    {
		        System.out.println(object.getBezeichnungAL().get(i));
		 }
		    
		    m.marshal(object, os);			 	
		}

Über System.out.println gebe ich den Inhalt des Arrays bezeichnungAL aus und es kommt genau das was in der JComboBox drin steht tja eingelesen ist es demnach richtig... dennoch wird es nicht in der XML Datei mit JAXB gespeichert? Kann JAXB keine Liste serialisieren?
 
Zurück