【Java/Swing】在窗口推出前记住窗口位置和大小以便下次打开时定位
【主要工具】
java.util.prefs.Preferences
【参考资料】
http://wjhsh.net/heyang78-p-3540069.html
【作用】
使用注册表或用户文件记住用户的偏好
【代码】
package com.hy.lab.gui.closeevent; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.prefs.Preferences; public class GuiDemo3 extends JFrame { public GuiDemo3(){ // 设置标题 super("窗口标题"); // 窗口的引用 final JFrame thisWindow=this; // 退出程序前执行一些事情 this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); // do sth before exit Preferences prefs= Preferences.userNodeForPackage(GuiDemo3.class); Point left=thisWindow.getLocation(); prefs.putInt("left.x",left.x); prefs.putInt("left.y",left.y); Dimension dm=thisWindow.getSize(); prefs.putInt("size.width",dm.width); prefs.putInt("size.height",dm.height); // close window thisWindow.setVisible(false); thisWindow.dispose(); System.exit(0); } }); // 根据内部组件调整窗口 pack(); Preferences prefs= Preferences.userNodeForPackage(GuiDemo3.class); // 窗口左上角定位 setLocation(prefs.getInt("left.x",100),prefs.getInt("left.y",100)); // 窗口大小调整 setSize(prefs.getInt("size.width",400),prefs.getInt("size.height",300)); } public static void main(String[] args){ // 让窗口可见 new GuiDemo3().setVisible(true); } }
【图例】
END