保存窗口设置信息,保存窗口信息,保存窗口设置信息[Jav
分享于 点击 10282 次 点评:63
保存窗口设置信息,保存窗口信息,保存窗口设置信息[Jav
保存窗口设置信息
[Java]代码
public class WindowSaver implements AWTEventListener { private static WindowSaver saver; private Map framemap; private WindowSaver( ) { framemap = new HashMap( ); } public static WindowSaver getInstance( ) { if(saver == null) { saver = new WindowSaver( ); } return saver; Toolkit tk = Toolkit.getDefaultToolkit( ); tk.addAWTEventListener(WindowSaver.getInstance( ), AWTEvent.WINDOW_EVENT_MASK); public void eventDispatched(AWTEvent evt) { try { if(evt.getID( ) == WindowEvent.WINDOW_OPENED) { ComponentEvent cev = (ComponentEvent)evt; if(cev.getComponent( ) instanceof JFrame) { JFrame frame = (JFrame)cev.getComponent( ); loadSettings(frame); } } }catch(Exception ex) { p(ex.toString( )); } } public static void loadSettings(JFrame frame) throws IOException { Properties settings = new Properties( ); settings.load(new FileInputStream("configuration.props")); String name = frame.getName( ); int x = getInt(settings,name+".x",100); int y = getInt(settings,name+".y",100); int w = getInt(settings,name+".w",500); int h = getInt(settings,name+".h",500); frame.setLocation(x,y); frame.setSize(new Dimension(w,h)); saver.framemap.put(name,frame); frame.validate( ); } public static int getInt(Properties props, String name, int value) { String v = props.getProperty(name); if(v == null) { return value; } return Integer.parseInt(v); } file.add(new AbstractAction("Quit") { public void actionPerformed(ActionEvent evt) { try { WindowSaver.saveSettings( ); System.exit(0); } catch (Exception ex) { System.out.println(ex); } } }); public static void saveSettings( ) throws IOException { Properties settings = new Properties( ); settings.load(new FileInputStream("configuration.props")); Iterator it = saver.framemap.keySet( ).iterator( ); while(it.hasNext( )) { String name = (String)it.next( ); JFrame frame = (JFrame)saver.framemap.get(name); settings.setProperty(name+".x",""+frame.getX( )); settings.setProperty(name+".y",""+frame.getY( )); settings.setProperty(name+".w",""+frame.getWidth( )); settings.setProperty(name+".h",""+frame.getHeight( )); } settings.store(new FileOutputStream("configuration.props"),null); } public static void main(String[] args) throws Exception { Toolkit tk = Toolkit.getDefaultToolkit( ); tk.addAWTEventListener(WindowSaver.getInstance( ), AWTEvent.WINDOW_EVENT_MASK); final JFrame frame = new JFrame("Hack X"); frame.setName("WSTes.main"); frame.getContentPane( ).add(new JButton("a button")); JMenuBar mb = new JMenuBar( ); JMenu menu = new JMenu("File"); menu.add(new AbstractAction("Quit") { public void actionPerformed(ActionEvent evt) { try { WindowSaver.saveSettings( ); System.exit(0); } catch (Exception ex) { System.out.println(ex); } } }); mb.add(menu); frame.setJMenuBar(mb); frame.pack( ); frame.show( ); } }
用户点评