问题描述
JFrame 对象的 setLocation(x,y) 可以灵活指定窗体的位置,
那么如何让 窗体 自动定位于 屏幕的正中间呢?
本文就来解决这个问题
实现思路
1、获取 JFrame 窗体的 宽度 和 高度;
2、获取 屏幕的 高度 和 高度;
3、计算实际的坐标:
起点x = (屏幕的宽度 - 窗体的宽度)/ 2;
起点y = (屏幕的高度 - 窗体的高度)/ 2;
4、使用 setLocation(x,y) 进行设置即可。
主要使用到了Toolkit这个工具类,来获取屏幕的参数。
实现代码
工具类
import javax.swing.*;
import java.awt.*;
/**
* @Author: northcastle
* @CreateTime: 2023-02-03 16:48
* @Description: 窗口的工具类
*/
public class WindowTool {
public static JFrame center(JFrame jFrame){
// 1、获取窗体的宽和高
int widthFrame = jFrame.getWidth();
int heightFrame = jFrame.getHeight();
// 2、获取屏幕的宽和高
Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = defaultToolkit.getScreenSize();
double widthScreen = screenSize.getWidth();
double heightScreen = screenSize.getHeight();
// 3、如果窗体的尺寸超过了,则直接用屏幕的尺寸
if (widthFrame > widthScreen){
widthFrame = (int)widthScreen;
}
if (heightFrame > heightScreen){
heightFrame = (int)heightScreen;
}
// 4、设置位置
int positionX = (int) ((widthScreen - widthFrame)/2);
int positionY = (int)((heightScreen - heightFrame)/2);
jFrame.setSize(new Dimension(widthFrame,heightFrame));
jFrame.setLocation(new Point(positionX,positionY));
return jFrame;
}
}
实际调用
// 直接调用方法,非常简单
JFrame frame = new JFrame("MyJFrame");
frame.setSize(new Dimension(800,600));
WindowTool.center(frame);
实现效果
窗体自动居于桌面的正中间