学习目标
- 区分Swing和AWT的不同
- 描述java GUI API的层次体系结构
- 使用框架、面板和简单GUI组件创建用户界面
- 理解布局管理器的作用
- 使用FlowLayout、GridLayout和BorderLayout管理器在一个容器中布局组件
- 使用JPanel类将面板作为一个子容器
- 使用Color类和Font类指定颜色和字体
- 将边界、工具提示、字体和颜色等常用特性应用在Swing组件上
- 使用边界可视化将用户界面组件分组
- 使用ImageIcon类创建图形图标
Swing和AWT
AWT适合开发简单的图形用户界面,但并不适合开发复杂的GUI项目。除此之外.AWT更容易发生与特定平台相关的故障,被一种更稳定,更通用和更灵活的库取代,就是swing库。大多数swing组件都是直接用java代码在画布上绘图的,而java.awt.window和panel的子类的组件例外,必须使用特定平台上自己的GUI来绘图。swing组件更少地依赖于目标平台并且更少地使用自己的GUI资源。不依赖于自己GUI的swing组件称为轻量级组件因此swing为轻量级组件,awt为重量级组件。最好使用swing的GUI组件
GUI API
包含的类可以分为三类
- 组件类
用于创建用户界面。如:JButton,JLabel和JTextField - 容器类
用于包含其他组件的。如:JFrame、JPanel、JApplet - 辅助类
用于支持GUI组件的。如:Graphics、Color、Font、FontMetrics和Dimension
组件类
Component类的实例可以显示在屏幕上。Component类是包括容器类的所有用户界面类的根类。JComponent类是所有轻量级Swing组件类的根类;她两都是抽象类,只能使用子类创建实例
容器类
一个Container的实例可以包含Component实例。容器类用于装其他GUI组件
- Container 用于对组件分组。框架Frame、面板Panel和applet都是他的子类
- JFrame 一个不能包含在另一个窗口的窗口他用于存放其他swing用户界面组件
- JPanel 一个存放用户界面组件的不可减的容器。面板可以嵌套,可以做画图的画布
- JApplet Applet的一个子类.必须扩展JApplet才能创建基于Swing的java applet
- JDialog 一个弹出式窗口或消息框,一般用作接收来自用户的附加信息或通知事件发生的临时窗口
GUI辅助类
- Graphics 一个抽象类,提供绘制字符串,先和简单几何图形的方法
- Color 处理GUI组件的颜色,可以在像JFrame和JPanel这样的组件中指定背景色或前景色,或者指定绘制的线条,几何图形和字符串的颜色
- Font 指定GUI组件上文本和图形的字体。大小、风格、字形
- FontMetrics 获取字体属性的抽象类
- Dimension 将组件的宽度和高度(以整数为精度)封装在单个对象中
- LayoutManager 指定组件在容器中如何放置
注意:辅助类是在包java.awt中的。swing组件不能取代AWT中的全部类。只能代替AWTGUI的组件类如:Button,textFied,TextArea.AWT辅助类在GUI程序设计中仍然很有用
框架
创建一个用户界面需要创建一个框架或者一个applet来存放用户界面组件
1.创建一个框架
用 JFrame类创建一个框架