Java提供了三个主要包做GUI开发:
java.awt 包 – 主要提供字体/布局管理器
javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)
java.awt.event 包 – 事件处理,后台功能的实现。
目录
Swing
AWT中大量引入了Windows函数,所以经常被称为重量级组件。而Swing使用Java语言实现的轻量级组件,没有本地代码,直接使用Swing可以更加轻松的构建用户界面。
在Java中所有的Swing都保存在javax.swing包中,从包名可以清楚的发现这个是一个扩展包,所有的组件是从JComponent扩展出来的。
如图所示:swing组件主要可分为三个部分,后面会详细介绍
(1)顶层容器::常用有JFrame,JDialog
(2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。
(3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。
容器(Container)
窗口JFrame
Swing中的窗口其实和AWT中的类似,只不过是对其做了升级改进,添加了更加人性化的方法。Swing中的Frame叫做JFrame,同样是一个顶级窗口,JFrame比较突出的一个特点就是不需要再去绑定监听事件去关闭窗口了,直接给我们一个方法:
void setDefaultCloseOperation(WindowConstants.常量);
//传入一个WindowConstants类型的常量去决定关闭的方式
Frame或JFrame类用于创建一个具有标题栏的框架窗口作为程序的主要界面,它不依赖其他容器可以单独存在。
构造方法
JFrame fr = new JFrame();
fr.setTitle("这是一个窗口");
JFrame fr = new JFrame("这是一个窗口");
参数设置及常用方法
·setTitle("窗体名称");
设置窗口名字·setSize(int width, int height);
设置窗体的大小·setBackground(Color c));
设置窗体的背景颜色·setLocation(int x, int y);
设置窗体的坐标(原点在左上角),传入坐标即可。·setBounds(int x, int y, int width, int height);
设置窗体的大小·setVisible(boolean b);
设置窗体是否可见,默认是不可见的,所以要可见必须用这个方法传入参数true。·setDefaultCloseOperation(int opreation);
设置点击窗体关闭按钮的时候,做出的响应。通常都是如下面这样写(调用WindowConstants这个类中的静态成员EXIT_ON_CLOSE,表示点击关闭按钮时的默认响应为关闭此窗口并结束程序)。fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
WindowConstants的相关静态成员如下:DO_NOTHING_ON_CLOSE(什么也不做)
HIDE_ON_CLOSE (隐藏当前窗口)
DISPOSE_ON_CLOSE (隐藏当前窗口,并释放窗体占有的其他资源,这个重点记一下,后面讲JDialog会用到)
EXIT_ON_CLOSE (结束窗口所在的应用程序)。
案例
import javax.swing.*;
public class Main{
public static void creatGUI() {
// 初始化窗口
JFrame jFrame = new JFrame("这个是窗口的标题");
// 设置窗口的位置和大小
jFrame.setBounds(400, 300, 500, 500);
// 设置窗口的背景颜色
jFrame.setBackground(new Color(175, 114, 114));
// 设置窗口是否可见
jFrame.setVisible(true);
// 设置窗口关闭时的响应
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
createGUI();
}
}
弹窗JDialog
弹窗,使用 JDialog 类可以创建自定义有的弹窗,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的弹窗。弹窗需要明白的一个最重要的概念:弹窗也是一个窗口,是通过另外一个窗口调出的。
构造方法
·有参构造1
JDialog(Frame owner);
用于创建一个非模态的对话框。参数owner为对话框所有者(顶级窗口JFrame)。
·有参构造2
JDialog(Frame owner,String title);
创建一个具有指定标题的非模态对话框。
·有参构造3
JDialog(Frame owner,boolean modal);
创建一个有指定模式(模态或非模态)的无标题对话框。
参数设置及常用方法
·setTitle("窗体名称");
·setModal(boolean modal);
//用来设置子窗口的模态①setSize(int width, int height);
②setLocation(int x, int y);
③setBounds(int x, int y, int width, int height);
④setVisible(boolean b);//基本必写
⑤setDefaultCloseOperation(int opreation);
通常作如下写法,表示点击子窗口的关闭按钮时,响应操作为隐藏子窗口,释放它占有的其它资源。Swing中使用JDialog用来被弹出,默认就存在关闭方法,请勿自己写