package au.gov.amsa.util.swing; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.prefs.Preferences; import javax.swing.JFrame; public final class FramePreferences { public static void restoreLocationAndSize(JFrame frame, int defaultX, int defaultY, int defaultWidth, int defaultHeight, Class<?> cls) { Preferences prefs = Preferences.userNodeForPackage(cls); int x = Integer.parseInt(prefs.get("frame.x", defaultX + "")); int y = Integer.parseInt(prefs.get("frame.y", defaultY + "")); int width = Integer.parseInt(prefs.get("frame.width", defaultWidth + "")); int height = Integer.parseInt(prefs.get("frame.height", defaultHeight + "")); frame.setLocation(x, y); frame.setSize(width, height); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { prefs.put("frame.x", frame.getX() + ""); prefs.put("frame.y", frame.getY() + ""); prefs.put("frame.width", frame.getWidth() + ""); prefs.put("frame.height", frame.getHeight() + ""); } }); } }