第三章Swing组件基础
Java Swing组件是用于构建图形用户界面(GUI)的工具包,包括按钮、标签、树、表格以及框架等,每个组件又会拥有不同的形态来满足不同用户的需要。Java Swing组件就是构成图形化界面的最基本元素。
3.1 Swing组件类的层次
Swing的层次图如下所示:
表 10
从上面的简略结构示意图中可以知道,Swing组件可以分为两种类型,一种是JComponent类,另外一种是Window类。其中Window组件类主要包括一些可以独立显示的组件,而JComponent组件类主要包括了一些不能独立显示的组件。什么是可以独立显示的组件呢?可以独立显示的组件就是当运行一个程序时,这个组件无须托付在其他组件上就可以显示,即它可以直接显示出来,例如JFrame类,他可以独立显示出来,无须其他的依靠组件。而不可独立显示的组件则必须依靠可独立显示的组件来显示,利润文本框组件、按钮组件必须要依托在JFrame框架组件上才能显示出来。
3.2 Swing常用的组件类型
从功能上划分,在Javax.swing包中Swing组件共有三种类型:顶层组件、中间组件、基本组件。顶层组件又被称作顶层容器,而中间组件又分为中间容器和特殊中间组件,如下图所示:
表 11
下面将详细介绍上图中组件类型的含义。
- 顶层容器:JFrame、JApplet、JDialog、JWindow。所谓的顶层容器也就是前面说的Window组件,它是可以独立显示的组件。
- 中间容器:所谓的中间容器也就是指哪些可以充当体,但也是不可独立显示的组件。如:JPanel、JScrollPane通俗地说,就是一些基本空间可以放在其中,但是它不能独立显示,必须要依托在顶层容器内才可以。
- 特殊中间容器:在GUI上起特殊作用的中间层,如JInternalFrame、JLateredPane、JRootPane。这里的特殊容器类其实也就是中间容器类中的一种,只不过它在图形上更加能够起到美化和专业化的作用。
- 基本组件:实现人机交互的组件,如JButton、JComboBox、JList、JMenu、JSlider、JTextField。
组件的层次结构是通过包含关系建立起来的。顶层容器包含中间容器和基本组件,中间容器又可以包含其他中间容器和基本组件。这种层次结构使得可以方便地组织和管理界面上的各种元素,实现复杂的用户界面。例如,可以在JFrame中添加一个JPanel,然后在JPanel中添加多个按钮和标签。这样,JFrame作为顶层容器,提供了整个窗口的框架,JPanel作为中间容器,负责组织和布局按钮和标签等基本组件。通过合理地利用 Java 的组件层次结构,可以创建出功能丰富、用户友好的图形用户界面应用程序。
3.2.1 Window类组件
当开发人员使用Java进行图形编程的时候,其组件将被绘制在哪里呢?此时,需要一个能够提供图形绘制的容器,这个容器就被称为顶层容器,也可以把它想象成一个窗口。顶层容器是进行图形编程的基础,一切图形化的东西都必然包括在顶层容器中,在Swing中主要有三种可以使用的顶层容器。
- JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
- JDialog:用来设计对话框。
- JApplet:用来设计可以嵌入在网页中的Java小程序。
基于Swing的图形界面至少要有一个顶层容器。容器与其所包含的组件形成了树状包含层次结构,顶层容器就是作为这个包含层次结构的跟。每个顶层容器都有一个内容面板,这个内容面板也就是前面提到的中间容器类组件,该内容面板中可以包含很多界面中所需要的组件。另外,在顶层容器中,也可以添加菜单组件,而菜单组件一般是放在顶层容器中,和内容面板是并行的。下图是关于JFrame作为顶层窗口的示意图。
表 12
通过示意图可以得知,在实际开发中涉及一个图形界面的方法,其方法就是首先创建一个顶层容器JFrame,接下来创建一个内容面板或者中间容器,也可以创建一个菜单组件,最后将所需要的基本组件按照一定的布局方式添加到内容面板中,这样就形成的一个图形界面。
3.2.2 JComponer类组件
JComponent类是所有轻量级的组件的父类,下面已表格的方式列出其子类以及用户,如表所示:
子类名称 | 说明 |
JButton | 创建按钮对,可以创建太图标的按钮 |
JTree | 创建树对象 |
JComboBox | 创建组合框对象,和Choice相似 |
JCheckBox | 创建复选框对象 |
JFileChooser | 创建文件选择器 |
JInternalFrame | 创建内部窗体 |
JLabel | 创建标签 |
JMenu | 创建菜单对象 |
JMenuBar | 创建菜单条对象 |
JPanel | 创建面板对象 |
JPasswordField | 创建口令文本对象 |
JPopupMenu | 创建弹出式菜单 |
JProgressBar | 创建进度条 |
JScrollBar | 创建滚动条 |
JTextArea | 创建文本区 |
JTable | 创建表格 |
JSplitPane | 创建拆分窗格 |
JToolTip | 创建工具提示对象 |
JToolBar | 创建工具条 |
JRadioButton | 创建单选按钮 |
JScrollPane | 创建滚动窗格 |
JSlider | 创建滚动条 |
以上就是JComponent类的子类,当然远远不止这些,所有继承JComponent类的组件都属于基本组件类,它们只能依赖于中间容器而存在。