package javacodebook.gui.statenew; import java.awt.*; import java.awt.event.*; import java.util.prefs.*; /** * Das PreferencesFrame speichert vom Benutzer gesetzte Einstellungen über * Preferences. Sie werden automatisch beim Programmende gespeichert, * und beim erneuten Programmstart wieder geladen. */ public class PreferencesFrame extends Frame { // Default Status der Applikation public static final boolean DEFAULT_MILK = false; public static final boolean DEFAULT_SUGAR = false; public static final String DEFAULT_SIZE = "normal"; // Keys für die Persistenten Daten public static final String MILK_KEY = "milk"; public static final String SUGAR_KEY = "sugar"; public static final String SIZE_KEY = "size"; // Komponenten des Frames private Checkbox milk = null; private Checkbox sugar = null; private Choice sizeChooser = new Choice(); // Preferences-Objekt private Preferences myPreferences = null; /** * Konstruktor von PreferencesFrame. */ public PreferencesFrame(String title) { super(title); setLayout(new FlowLayout()); // Beim Klicken des Schließen-Buttons vom HauptFenster // wird die shutdown-Methode aufgerufen. this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { shutdown();} }); // Komponenten werden gebaut und auf das Frame gelegt milk = new Checkbox("Milch"); sugar = new Checkbox("Zucker"); sizeChooser.add("klein"); sizeChooser.add("normal"); sizeChooser.add("groß"); add(milk); add(sugar); add(sizeChooser); // Alte bzw. Default Einstellungen werden gesetzt startup(); } private void startup() { // Preferences-Obkect im User-Baum wird gebaut. myPreferences = Preferences.userRoot(); // Anfangsstatus der Application wird hergestellt, falls die Preferences // noch nicht gestzt waren, weren Defaulteinstellungen verwendet. milk.setState(myPreferences.getBoolean(MILK_KEY,DEFAULT_MILK)); sugar.setState(myPreferences.getBoolean(SUGAR_KEY,DEFAULT_SUGAR)); sizeChooser.select(myPreferences.get(SIZE_KEY,DEFAULT_SIZE)); } private void shutdown() { // Aktueller Status wird in dem Preferences-Objekt abgelegt. myPreferences.putBoolean(MILK_KEY, milk.getState()); myPreferences.putBoolean(SUGAR_KEY, sugar.getState()); myPreferences.put(SIZE_KEY, sizeChooser.getSelectedItem()); System.exit(0); } }