12.2 Swing基本组件的用法 12.2.1 Java的Swing组件层次
12.2 Swing基本组件的用法
前面已经提到,Swing
为所有的AWT
组件提供了对应实现(除Canvas
组件之外,因为在Swing
中无须继承Canvas
组件),通常在AWT
组件的组件名前添加“J”就变成了对应的Swing
组件。
12.2.1 Java的Swing组件层次
大部分Swing
组件都是JComponent
抽象类的直接或间接子类(并不是全部的Swing
组件)JComponent
类定义了所有子类组件的通用方法,JComponent
类是AWT
里Java.AwtContainer
类的子类,这也是AWT
和Swing
的联系之一。绝大部分Swing
组件类继承了Container
类,所以Swing
组件都可作为容器使用(JFrame
继承了Frame
类)。图12.1显示了Swing
组件继承层次图。
图12.1中绘制了Swing
所提供的绝大部分组件,其中以灰色区域覆盖的组件可以找到与之对应的AWT
组件;JWindow
与AWT
中的Window
相似,代表没有标题的窗口。读者不难发现这些Swing
组件的类名和对应AWT
组件的类型也基本一致,只要在原来的AWT
组件类型前添加“J”即可,但有如下几个例外:
JComboBox
:对应于AWT
里的Choice
组件,但比Choice
组件功能更丰富。JFileChooser
:对应于AWT
里的FileDialog
组件。JScrollBar
:对应于AWT
里的Scrollbar
组件,注意两个组件类名中b字母的大小写差别JCheckBox
:对应于AWT
里的Checkbox
组件,注意两个组件类名中b字母的大小写差别。JCheckBoxMenuitem
:对应于AWT
里的CheckboxMenuitem
组件,注意两个组件类名中b字母的大小写差别。
上面JCheckBox
和JCheckBoxMenuitem
与Checkbox
和CheckboxMenuitem
的差别主要是由早期Java
命名不太规范造成的。
Swing中的重量级组件
从图12.1中可以看出,Swing
中包含了4个组件直接继承了AWT
组件,而不是从JComponent
派生的,它们分别是:JFrame
、JWindow
、JDialog
和JApplet
,它们并不是轻量级组件,而是重量级组件(需要部分委托给运行平台上GUI
组件的对等体)。
Swing组件分类
将Swing
组件按功能来分,又可分为如下几类
- 顶层容器:
JFrame
、JApplet
、JDialog
和JWindow
。 - 中间容器:
JPanel
、JScrollPane
、JSplitPane
、JToolBar
等 - 特殊容器:在用户界面上具有特殊作用的中间容器,如
JInternalFrame
、JRootPane
、JLayeredPane
和JDestopPane
等。 - 基本组件:实现人机交互的组件,如
JButton
、JComboBox
、JList
、JMenu
、JSlider
等。 - 不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如
JLabel
、JProgressBar
和JToolTip
。 - 可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如
JTable
、JTextArea
和JTextField
等。 - 特殊对话框组件:可以直接产生特殊对话框的组件,如
JColorChooser
和JFileChooser
等。