JFrame 位于屏幕正中间

该文章介绍了一种方法,通过获取JFrame窗口和屏幕的尺寸,然后计算中间位置,使用Toolkit和setLocation()方法,将JFrame窗体自动定位到屏幕正中央。提供了一个WindowTool工具类的示例代码,实现了窗口居中功能。
摘要由CSDN通过智能技术生成

问题描述

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);

实现效果

窗体自动居于桌面的正中间
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用JavaSwing来建立一个Frame框架,并实现打开文件的功能。下面是一个简单的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; public class FileOpener extends JFrame implements ActionListener { private JTextField filenameField; private JTextArea contentArea; public FileOpener() { super("文件打开窗体"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); // 创建顶部的文件名输入框和打开按钮 JPanel topPanel = new JPanel(new BorderLayout()); filenameField = new JTextField(); JButton openButton = new JButton("打开"); openButton.addActionListener(this); topPanel.add(filenameField, BorderLayout.CENTER); topPanel.add(openButton, BorderLayout.EAST); add(topPanel, BorderLayout.NORTH); // 创建中间的文本区域 contentArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(contentArea); add(scrollPane, BorderLayout.CENTER); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("打开")) { // 显示文件选择对话框 JFileChooser chooser = new JFileChooser(); int result = chooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { // 读取选中的文件并显示在文本区域中 File file = chooser.getSelectedFile(); filenameField.setText(file.getAbsolutePath()); try { BufferedReader reader = new BufferedReader(new FileReader(file)); String line; contentArea.setText(""); while ((line = reader.readLine()) != null) { contentArea.append(line + "\n"); } reader.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } public static void main(String[] args) { new FileOpener(); } } ``` 运行该程序,会弹出一个窗口,顶部有一个文件名输入框和打开按钮,中间是一个文本区域。当用户点击打开按钮时,会弹出文件选择对话框,用户选择一个文件后,程序会读取文件内容并显示在文本区域中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值