1.图形化用户界面(GUI)概述
1.1 AWT、Swing、SWT
- AWT 是Abstract Window ToolKit的缩写,该工具包提供了一套与本地图形界面进行交互的接口。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。
- AWT是一个完善而简单的图形用户界面接口,但是不适合开发综合的GUI项目
- Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且对AWT 的功能进行了大幅度的扩充。由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。
- Swing组件的类以字母“J”开头,除了保留有与AWT类似的组件之外,又增加了丰富的高层组件。
- SWT是Standard Widget Toolkit的缩写,它也是一个开源的GUI编程框架,Eclipse组织编写的SWT开发包, SWT创建了Java版的本地主机操作系统GUI控件,并且它依赖于本机实现,可以开发高效率的拥有标准外观的GUI程序。
- Java语言采用向容器中添加组件的方式构建图形用户界面。通常采用顶级容器作为所有组件的承载物,可以向其中添加包括容器在内的各种组件,合理地安排组件的布局,从而构成用户所需的图形用户界面。容器之间的嵌套是完全允许的。
1.2 AWT组件
Component & Container
- Java的图形用户界面的最基本组成部分是Component,Component类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如:按钮,标签等。
- 一般的Component对象不能独立地显示出来,必须位于某个Container对象中才可以显示出来。
- Container是Component子类, Container子类对象可以“容纳”其他的Component对象。
- Container对象可使用方法add(…)向其中添加其他的Component对象。
- 两种常用的Container:
- Window:其对象表示自由的顶级窗口
- Panel:其对象可作为容纳其他Component对象,但不能独立存在,必须被添加到其他Container中(如Window或Applet)
Frame
- Frame是Window的子类,由Frame或其子类创建的对象为一个窗体。
- Frame的常用构造方法:
- Frame()
- Frame(String s) 创建标题栏为字符串s的窗口
- 其他方法:
- setBounds(int x, int y, int width, int height)
- setSize(int width, int height)
- setLocation(int x, int y)
- setVisible(boolean b)
- setResizable(boolean b)
- setBackground(Color c)
- setTitle(String name)
Panel
- Panel对象可以看成可以容纳Component的空间
- Panel对象可以拥有自己的布局管理器
- 构造方法:
- Panel() 使用默认的FlowLayout类布局管理初始化
- Panel(LayoutManager layout) 使用指定的布局管理初始化
- Panel类拥有从其父类继承来的方法:
- setBounds(int x, int y, int width, int height)
- setSize(int width, int height)
- setLocation(int x, int y)
- setBackground(Color c)
- setLayout(LayoutManager mgr)等
1.3 Swing组件
Swing组件从API类使用上可分为三大类:
(1)容器类
字面意思就是用来包含其它组件的一个容器。例如:JApplet、JFrame、Jdialog(Jwindow)、JPanel 。
(2)组件类
都是JComponent类(抽象类)的子类。例如:JButton、JTextField, JTextArea, JComboBox, JList, JRadioButton, JMenu。
(3)辅助类
是描述和绘制容器类和组件类属性和放置的,如图形环境、颜色、字体、大小以及摆放位置等等,例如:Graphics, Color, Font, FontMetrics, Dimension, LayoutManager。
2.常用组件
2.1 JFrame 窗口
- 构造方法:
- public JFrame()
- public JFrame(String title)
- 成员方法:
- setSize()、setVisible()、setLocation()、setDefaultCloseOperation()、getContentPane()、setTitle()
- public void setDefaultCloseOperation(int operation)【设置窗口关闭时的动作】中参数operation的4种取值:
- DO_NOTHING_ON_CLOSE
- HIDE_ON_CLOSE
- DISPOSE_ON_CLOSE
- EXIT_ON_CLOSE

2.2 JButton 按钮
- 构造方法:
- public JButton()
- public JButton(String text)
- public JButton(Icon icon)
- public JButton(String text, Icon icon)
- 成员方法:
- public void setText(String text)
- public void setIcon(Icon icon)
- public void setBounds(int height,int width,int x,int y)
- public void addActionListener(ActionListener l)

2.3 Icon 图标
- 可以在JLabel 或者任何从AbstractButton继承的组件中使用Icon
- 包含JButton, JCheckBox, JRadioButton,以及几种不同JMenuItem
例如:和Jlabel一起使用Icon

2.4 JTextField 文本域

2.5 JTextPane 文本面板

2.6 JCheckBox 复选框

2.7 JRadioButton 单选按钮

2.8 JComboBox 组合框(下拉列表)

常用组件综合实例
注意:先把panel的布局写好(add完各种组件)再将该panel添加进frame

2.9 Drawing 绘图

2.10 JDialog 对话框


2.11 JFileChooser 文件对话框

2.12 JTextArea 文本域

2.13 Swing组件上的HTML

3.布局管理
在容器中有一个函数叫setLayout( ) ,可以选择不同的布局方式
➢BorderLayout
➢FlowLayout
➢GridLayout
➢GridBagLayout (powerful, difficult)
➢BoxLayout (simplify GridBagLayout)
➢CardLayout
3.1 边界布局 BorderLayout


3.2 顺序布局 FlowLayout

3.3 网格布局 GridLayout

3.4 GridBagLayout

3.5 CardLayout

3.6 BoxLayout

布局管理器总结
- JFrame是一个顶级窗口,JFrame的缺省(默认)布局管理器为BorderLayout
- JPanel无法单独显示,必须添加到某个容器中,缺省布局管理器为FlowLayout
- 使用布局管理器时,布局管理器负责各个组件的大小和位置
- 用户无法设置组件大小和位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖
4.事件处理
4.1 事件处理机制
三类重要对象:
- 事件(Event),例如:KeyEvent, ActionEvent
- 事件源(Event Source),例如:Button
- 事件处理者,事件监听器(Event handler)








4.2 事件类与事件监听接口







5.GUI开发组件

本章小结

188



被折叠的 条评论
为什么被折叠?



