JavaSwing之-JFrame

发布于:2025-05-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

JavaSwing之-JFrame

JFrame 是 Java Swing 中的一个顶级容器类,用于创建窗口应用程序。它通过设置布局来管理内部组件的排列,可添各种 Swing 组件:如按钮、文本框、标签等。支持事件监听机制响应用户操作,如点击、关闭等。默认不可见,需调用 setVisible(true) 显示窗口。

一、构造方法

JFrame类在javax.swing.JFrame包中,提供了灵活的构造方法创建窗口,其常见的构造方法如下表所示。

方法名称 功能描述
JFrame() 构造一个初始时不可见的新窗体。
JFrame(String title) 创建一个新的、初始不可见的、具有指定标题的 Frame。

示例代码。

JFrame frame1 = new JFrame();//创建一个不可见窗口对象
JFrame frame2 = new JFrame("我的窗口");//创建一个带标题的不可见窗口对象
二、常用方法

窗口(系统界面)是有尺寸大小、显示位置、窗口标题、关闭模式、是否可见等常规要素,JFrame类提供了便捷的方法用以设置窗口必备的要素。

JFrame常用方法如下表所示。

方法名称 功能描述
setTitle(String title) 设置窗口标题
setSize(int width, int height) 设置窗口大小
setLocationRelativeTo(null) 居中显示窗口
setDefaultCloseOperation(int operation) 设置关闭操作(如退出程序)
add(Component comp) 添加组件到窗口中
setVisible(boolean b) 设置窗口是否可见
setLayout(LayoutManager mgr) 设置布局管理器

示例代码。

frame1.setTitle("我的窗口");//设置窗口标题
frame1.setSize(400,300);    //设置窗口大小
frame1.setLocation(200,200);//设置窗口位置
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭方式
frame1.setVisible(true);//设置窗口可见

在设置窗口显示位置时,可以使用以下代码让窗口初始显示在屏幕居中位置。

frame1.setLocationRelativeTo(null);//设置窗口相对于某个组件的位置,传入 null 表示相对于整个屏幕居中。

若想让当前窗口相对于某一窗口显示,可以将相对父窗口对象作为参数传递至setLocationRelativeTo(Component c),相对显示窗口。

 // 将frame2的位置设置为相对于frame1的位置,以便于在界面上合理布局
frame2.setLocationRelativeTo(frame1);

在setSize(int width,int height)中传入宽度和高度可以设置窗口的尺寸大小,如果想让窗口大小随着屏幕分辨率的改变而保持纵横比改变,可以通过以下逻辑设计实现。

1.获取当前系统屏幕分辨率;

2.根据分辨率的width和height值设置窗口的width和height

// 获取当前屏幕的尺寸
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
// 计算窗口的宽度,取屏幕宽度的三分之二
int width = dimension.width * 2 / 3;
// 计算窗口的高度,取屏幕高度的三分之二
int height = dimension.height * 2 / 3;
// 设置窗口的大小
frame1.setSize(width, height);

setSize()方法还可以以Dimension对象作为参数,如下代码所示。

frame1.setSize(new Dimension(width, height));//width、height为窗口尺寸
三、其他操作
  • JFrame窗口还可以设置自定义图标,示例代码如下所示。
//根据指定图标文件创建icon对象
ImageIcon icon = new ImageIcon("src/images/ai.png");
// 从ImageIcon对象中获取图像--向上转型
Image image = icon.getImage();
// 设置窗口的图标为加载的图像
frame1.setIconImage(image);//参数为Image类型,不能直接实例化对象,ImageIcon对象向上转型作为参数
  • 不显示窗口图标、标题栏和关闭按钮等部件
 // 设置窗口为无边框模式(隐藏标题栏、关闭按钮等)
 frame1.setUndecorated(true);

完整示例代码如下。

public class JFrameDemo {
    public static void main(String[] args) {
        //1.创建一个窗口对象
        JFrame frame1= new JFrame();//创建一个不可见窗口对象
        
       //2.设置窗口属性
        frame1.setTitle("我的窗口");//设置窗口标题
        frame1.setSize(800,600);    //设置窗口大小
        frame1.setLocation(200,200);//设置窗口位置
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭方式
        frame1.setLocationRelativeTo(null);//窗口居中显示

        //3.根据屏幕分辨率设置窗口大小
        // 获取当前屏幕的尺寸
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        // 计算窗口的宽度,取屏幕宽度的三分之二
        int width = dimension.width * 2 / 3;
        // 计算窗口的高度,取屏幕高度的三分之二
        int height = dimension.height * 2 / 3;
        // 设置窗口的大小
        frame1.setSize(width, height);
        //用setSize(Dimension dim)设置窗口大小,参数为Dimension对象,表示窗口的尺寸
        frame1.setSize(new Dimension(width, height));

        //4.设置图标
        // 创建一个ImageIcon对象,用于加载AI的图像
        ImageIcon icon = new ImageIcon("src/images/handlike.png");
        // 从ImageIcon对象中获取图像
        Image image = icon.getImage();
        // 设置窗口的图标为加载的图像
        frame1.setIconImage(image);

        // 5.设置窗口为无边框模式(隐藏标题栏、关闭按钮等)--必须在setVisible前调用
        frame1.setUndecorated(true);

        //6.设置窗口只包含关闭按钮
        frame1.setResizable(false);

        //7.设置frame1窗口可见,使其在屏幕上显示
        frame1.setVisible(true);
    }
}

四、总结

JFrame 是构建图形界面的基础,使用布局管理器可以灵活设置布局、添加组件、处理事件,配合 JPanelJButtonJLabel 等组件可构建功能丰富的界面。
关于JFrame类的其他方法功能及应用,请查看JDK帮助文档。


网站公告

今日签到

点亮在社区的每一天
去签到