【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

posted @ 2023-01-21 10:19  逆火狂飙  阅读(101)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东