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