【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 @   逆火狂飙  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-01-21 [Oracle/SQL]找出id为0的科目考试成绩及格的学生名单的四种等效SQL语句
2017-01-21 为什么一个目录里放超过十个Mp4文件会导致资源管理器和播放程序变卡变慢?
2015-01-21 【高中数学/函数/幂函数】若a=(1/2)^2/3,b=(1/5)^2/3,c=(1/2)^1/3,则a,b,c的大小关系是?
2015-01-21 【Canvas与艺术】蓝色渐变单脚四钉正方形中写盈字
2014-01-21 【Canvas与艺术】双齿轮啮合传动
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示