Fenstergrösse speichern und laden

baxis

Grünschnabel
Hallo

Ich bin dabei eine Java- Applikation zu schreiben.Soweit klappt das ganz gut.
Jetzt möchte ich das wenn die Applikation startet die Fensterposition sowie die Fenstergrösse geladen werden, welche beim letzten beenden der Applikation automatisch gespeichert wurden.
Um die Daten zu speichern habe ich einen WindowAdapter, der reagiert wenn der HauptFrame geschlossen wird.

Frage:
Wie speichere ich die Daten am besten ab, damit diese beim Starten wieder geladen werden können? Soll ich dazu eine INI - Datei benutzen oder gibt es bessere Möglichkeiten?
 
Tach,
was soll es denn besseres geben als über Properties die entsprechenden Einstellungen zu speichern? Irgendwo müssen ja die Parameter stehen, die beim erneuten Programmstart wieder zur Verfügung stehen sollen. Also erledigt man das über Properties-Dateien, von Dir ini genannt.
 
Vielen Dank
Ich habe bis anhin, noch nie etwas von Properties gehört. Werde mich aber nun mal darüber informieren
 
Hi,
würde von Property-Dateien abraten, da sie nur eine ganz flache Key-/Value-Struktur erlauben, z.B. in der Form
x=123
y=678
etc.
Irgendwann kommst Du bei der Entwicklung Deiner Anwendung an einen Punkt, wo das einfach nicht mehr genügt.
Besser ist die Speicherung in einer .xml-Datei, weil XML beliebig verschachtelte Strukturen unterstützt. Dazu gibt es auf http://www.jdom.org/ ein .jar-File, das Dir alle Möglichkeiten bietet, ganz komfortabel mit dem XML-Document-Object-Model (DOM) umzugehen.
Sicher findest Du bei entsprechender Suche auch Code-Beispiele. Wenn nicht, schreib mir ein Mail(testalucida@kendelweb.de), dann schicke ich Dir ein Beispiel.
Grüße
testalucida
 
Hallo!

Schau mal hier:
Code:
/*
 * Created on 13.01.2005@20:34:06
 *
 * TODO Licence info
 */
package de.tutorials;

import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import javax.swing.JFrame;

/**
 * @author Administrator
 * 
 * TODO Explain me...
 */
public class SavePositionExample extends JFrame {

	public final static String SETTINGS_FILE = "/saveEnv.xml";

	public SavePositionExample() {
		super("SavePositionExample");
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				saveWindowState();
			}
		});

		reloadWindowState();
		setVisible(true);
	}

	/**
	 *  
	 */
	private void reloadWindowState() {
		try {
			XMLDecoder decoder = new XMLDecoder(new FileInputStream(System
					.getProperty("user.home")
					+ SETTINGS_FILE));
			Dimension d = (Dimension) decoder.readObject();
			Point p = (Point) decoder.readObject();

			setSize(d);
			setLocation(p);
			decoder.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("Keine Settings Datei gefunden!");
			e.printStackTrace();
		}
	}

	/**
	 *  
	 */
	private void saveWindowState() {
		try {
			XMLEncoder encoder = new XMLEncoder(new FileOutputStream(System
					.getProperty("user.home")
					+ SETTINGS_FILE));
			encoder.writeObject(SavePositionExample.this.getSize());
			encoder.writeObject(SavePositionExample.this.getLocation());

			encoder.flush();
			encoder.close();

		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} finally {
			setVisible(false);
			dispose();
			System.exit(0);
		}
	}

	public static void main(String[] args) {
		new SavePositionExample();
	}
}

Gruß Tom
 
Zuletzt bearbeitet:
Zurück