- GUI的概念
- Swing概述
- 容器组件
- 布局管理器
- 常用组件
- 事件处理
- 对话框
GUI的概念
GUI(Graphical User Interface)即图形用户界面,它能够使应用程序使用起来更加便捷,看上去更加友好。
Swing概述
Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同的行为。Swing中的大部分组件类位于javax.swing包中。Swing中的组件非常丰富,支持很多功能强大的组件。
容器组件
Java的图形用户界面的基本组成部分是组件,组件是一个以图形化的方式,显示在屏幕上并能与用户进行交互的对象;
组件不能独立地显示出来,必须将组件放在一定的容器(container)中才可以显示出来。
容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容器中添加组件。
窗口(Frame)和面板(Panel)是最常用的两个容器。
常用的容器组件:
JFrame
用于在Swing程序中创建窗口。
JFrame的常用方法有:
- void setSize(int width, int height):设置窗口尺寸大小
- void setVisible(boolean b):显式窗口,放在代码最后
- void setTitle(String title):设置窗口标题
- void setResizable(boolean resizable):设置是否能更改界面大小
- void setLocation(int x,int y):设置界面位置
- void setLocationRelativeTo(null):窗口相对位置,水平居中
- void setDefaultCloseOperation(int operation):关闭窗口选项
- void dispose():关闭窗口,并释放一部分资源。
dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。
Jpanel
JPanel提供面板,它是轻量级的容器; 面板中可以添加其它组件,也可以设置布局,我们一般使用面板来实现布局嵌套。
package Day1.Demo1;
import javax.swing.*;
import java.awt.*;
public class Demo1 extends JFrame {
public static void main(String[] args) {
//JFrame
JFrame jFrame = new JFrame();//新建窗口
//JFrame jFrame = new JFrame("我的GUI界面");//新建窗口,并设定标题
jFrame.setSize(500,500);//设置窗口尺寸大小
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口选项
jFrame.setTitle("我的GUI界面");//设置窗口标题
jFrame.setResizable(false);//禁止更改界面大小
jFrame.setLocation(500,500);//更改界面位置
jFrame.setLocationRelativeTo(null);//窗口相对位置,水平居中
//JPanel
JPanel jPanel=new JPanel();//面板,面板默认流式布局,组件居中对齐
JPanel jPanel1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流式布局
JPanel jPanel2=new JPanel(new GridLayout());//网格布局
JPanel jPanel3=new JPanel(new BorderLayout());//边界布局
jFrame.add(jPanel);//在窗口上添加面板
Color color=new Color(200);//新建颜色
jPanel.setBackground(color);//设置面板背景颜色
//新建按钮JButton
JButton jButton1=new JButton("按钮1");
JButton jButton2=new JButton("按钮2");
JButton jButton3=new JButton("按钮3");
JButton jButton4=new JButton("按钮4");
jButton1.setSize(50,50);//设置组件大小
jButton2.setLocation(400,500);//设置组件位置
jPanel.add(jButton1);//向面板内添加按钮
jPanel.add(jButton2,BorderLayout.AFTER_LAST_LINE);//将组件放在面板的指定位置中
jPanel.add(jButton3);
jPanel.add(jButton4);
//新建标签
JLabel jLabel=new JLabel("用户名");
jLabel.setForeground(color);//设置标签字体颜色
jLabel.setFont(new Font("黑体",Font.BOLD,20));//设置标签字体
jPanel.add(jLabel);//将标签添加到面板中
//新建单行文本框
JTextField jTextField=new JTextField(20);//新建单行文本框,设置字体数为20(也可以不设置)
jPanel.add(jTextField,FlowLayout.CENTER);
jPanel.setVisible(true);//显式面板
jFrame.setVisible(true);//显式窗口,放在代码最后
//this.setVisible(true);//this指当前窗口,显式窗口,放在代码最后
}
}
布局管理器
swing中,提供了布局管理器类的对象可以管理。
每个Jpanel都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Jpanel的setLayout方法改变其布局管理器对象或通过构造方法设置。
三种常用的布局管理器:FlowLayout , BorderLayout, GridLayout。
FlowLayout
FlowLayout布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排,并在默认情况下使组件尽量居中放置。
FlowLayout布局管理器对组件逐行定位,行内从左到右