Speichern von Einstellungen die in einem Panel getroffen wurden

screaper

Mitglied
Hallo,

ich benutze ein JPanel mit diversen RadioButtons und Textfeldern zur Konfiguartion eines Spiels.
Aufrufreihenfolge:

Main -> klick auf neues Spiel -> ConfigPanel öffnet sich -> EIngaben -> OKButton -> Los gehts.
Das ConfigPanel soll bei jedem Neustart aufgehen und die zuletzt eingestellten Werte wieder anzeigen,. sodass man nicht alles neu Selektieren muss.

Ich dachte ich verwende dazu einen XMLEn/DEcoder.
Nun weiß ich aber nicht, wie ich das Panel Encodieren soll.

Das Ende des ConfigPanel Construktors sieht so aus:

Java:
try{
		encodeToFile(this);
		}
		catch (FileNotFoundException ex){}

this.set Visible(false);
}

Meine EncodierMethode:

Java:
private void encodeToFile(ConfigDialog c)throws FileNotFoundException{
		File configFile = new File("config.xml");
		XMLEncoder x = new XMLEncoder(new FileOutputStream(configFile));
		x.writeObject(c);
		x.close();
		}

Und nun die alles entscheidende Frage..... WO lese ich nun die Daten wieder ein


Java:
public ConfigDialog decodeFromFile() throws FileNotFoundException{
		File configFile = new File("config.xml");
		ConfigDialog c;
		XMLDecoder d = new XMLDecoder (new FileInputStream(configFile));
		c = (ConfigDialog)d.readObject();
		d.close();
		return c;
	}


Und geht das überhaupt so, oder sollte man das Problem ganz anders angehen?

Gruß Screaper
 
Hallo Sascha,

naja ganz so "professionell" solls nicht sein.

Ich weiß nicht ob das mit Serialisierung geht, und wenn ja, dann habe ich das geliche Probelm wieder, an welcher stelle in welcher klasse lese ich die Daten ein?

Gruß Screaper
 
Es ist ja nicht sinnvoll das Panel zu serialisieren und zu speichern, sondern nur die Einstellungen. Dann hast du das Problem ja gar nicht.

Zum Beispiel, wenn du ein Textfeld hast, in dem die Spieleranzahl steht und du das speichern möchtest. Speicherst du nicht das Textfeld, sondern nur den Wert in dem Textfeld. Beim nächsten mal, wenn das Textfeld angezeigt werden soll, musst du das Textfeld, wieder auf den gespeicherten Wert setzen.

Gruß

Sascha
 
Perfekt. genau so will ich das haben....

und wie mach ich das am besten?

Über XML oder "per hand" in die Datei schreiben? Wie macht man das am besten?
Es sind auch jede Menge Radiobuttons vorhanden, die auch übernommen werden müssen und Daten von "Subdialogen"

Gruß Screaper
 
Problem erledigt, habs ganz anders gemacht.

Ich habe die Daten in meinem Main-Frame abgelegt, der immer offen ist. Und von dort hole ich sie mir bei jedem Spiel-Neustart.

Kann man das so machen?
 
Mit welcher Klasse du das am besten löst habe ich dir schon gezeigt.

Mit den Preferences klappt das ganz gut.
Du musst lediglich alle deine Attribute die du gesetzt hast, auslesen und in den Preferences speichern.
Die Preferences kann man in einer Datei auf der Platte ablegen. Dafür sind sie ja vorgesehen.

Wie hast du denn deine Panels aufgebaut?
Fragst du jedes mal den Stand deiner Radio/Checkboxes ab oder setzt du einen Wert in einer Variable.

Gruß

Sascha
 
Zurück