学习目标

  • 区分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类创建一个框架