Swing组件
Swing**AWT **不是跨平台的,从外观到控制都依赖操作系统,是重型组件**Swing **组件是用纯 java 实现的轻型(Lightweight)组件没有本地代码不依赖本地操作系统的支持在不同的操作系统表现一致Swing 库是 AWT 库的扩展Swing 组件类关系和顶层容器Swing 组件类关系:javax.swing 包提供数量众多的接口、类和组件所有的组件是从 JCompon
Swing
**AWT **不是跨平台的,从外观到控制都依赖操作系统,是重型组件
**Swing **组件是用纯 java 实现的轻型(Lightweight)组件
没有本地代码
不依赖本地操作系统的支持
在不同的操作系统表现一致
Swing 库是 AWT 库的扩展
Swing 组件类关系和顶层容器
Swing 组件类关系:
-
javax.swing 包提供数量众多的接口、类和组件
-
所有的组件是从 JComponent 扩展出来的
窗口(Window)
-
Container 的子类
-
有标题栏和相关控制按纽
-
有边框
-
可以添加菜单栏
-
可以独立存在
-
运行可以被移动,改变大小
-
是顶层容器,不能包含在其他容器中
面板(Panel)
-
Container 子类
-
没有标题,没有边框,不可添加菜单栏
-
不能独立存在
-
可以包含其他 panel
框架 Frame
-
Window 子类
-
是一种窗口
-
用于 JAVA Application 应用程序的主窗口,带有最大化、最小化和关闭控制按纽
对话框 Dialog
-
Window 子类
-
也是一种窗口
-
不能作为应用程序的主窗口,通常依附于一个框架
-
没有最大化和最小化按纽
-
有模式(Modal)窗口属性
-
总在最前面
标签 Label
- 用于显示字符串
文件行 TextField
- 单行文本编辑框,用于输入一行文
按纽 Button
-
显示执行命令
-
执行特定操作
JPanel、JButton
-
JPanel 用来创建面板
-
JButton 用来创建按钮
package com.swing.ljb;
import java.awt.*;
import javax.swing.*;
public class Swing {
public static void main(String[] args) {
JFrame jf = new JFrame("第一个 Swing 窗口");//创建窗口
jf.setSize(230, 80);//大小
jf.setBackground(Color.WHITE);//背景颜色
jf.setLocation(300, 200);//窗体大小
Container pane = jf.getContentPane(); //创建面板
JPanel panel=new JPanel();
JButton send=new JButton("发送");//创建按钮
JButton quit=new JButton("退出");
//把 button 放置到 panel 上,把 panel 放置到 frame 上
panel.add(send);//添加按钮
panel.add(quit);
pane.add(panel);
jf.setVisible(true);
}
}
常用的布局
一个图形用户界面上会有很多个组件,这些组件需要根据用户使用需求和习惯进行布局,API 中提供了几种常用的布局管理器来进行布局;
流布局管理器 FlowLayout
组件按照从左到右,从上到下的方式依次布局;是 JPanel 的默认布局管理器;
边界布局管理器 BorderLayout
将容器分为东西南北中五个区域,可以在指定区域放置组件;是 JFrame 的默认布局管理;
网格布局管理器 GridLayout,
将容器分成等行等列的网格;
package com.swing.ljb;
import java.awt.*;
import javax.swing.*;
public class Swing {
public static void main(String[] args) {
// 创建 JFrame 对象
JFrame frame = new JFrame("TestJFrame");
// 获得内容面板容器
Container pane = frame.getContentPane();
// 创建 JPanel 对象
JPanel panel = new JPanel();
// 创建 JButton 对象
JButton send = new JButton("发送");
JButton quit = new JButton("退出");
// 把 button 放置到 panel 上,把 panel 放置到 frame 上
// 对 panel 设置流布局管理器
panel.setLayout(new FlowLayout());
// 把 button 放置到 panel 上,把 panel 放置到 frame 上
panel.add(send);
panel.add(quit);
// 对 frame 设置布局管理
frame.setLayout(new BorderLayout());
JLabel label = new JLabel("聊天内容:");
JTextField input = new JTextField();// 输入框
JTextArea output = new JTextArea();// 文本域
pane.add(label, "North"); // 北边 ->上边
pane.add(input, "South"); // 南边 ->下边
pane.add(output, "Center");// 中间
pane.add(panel, "East");// 包含了 2 个按钮,东-> 右边
// 设置大小及可见性
frame.setSize(300, 200);
frame.setVisible(true);
}
}
GUI 事件与监听器
对于一个 GUI 来说,如果不进行事件处理,就是“又聋又哑”的,无法与用户进行交互;
Java Swing 中事件相关的类和接口都位于 java.awt.event 以及 javax.swing.event 中;
主要包括 XXXEvent 事件类,以及与事件类对应的监听器接口 XXXListener;
对 GUI 进行事件处理的基本步骤:
判断事件源组件以及事件类型
编写事件监听器类,实现相应的监听器接口
使用 addXXXListener 方法,对事件源组件进行事件监听注册
更多推荐
所有评论(0)