一、Swing的层次结构:
Swing组件可以分成两种类型,一种是JComponent类(此类的子类都是轻量级组件),另一种是Window类。两者的区别是JComponent组件类主要包括一些不能独立显示的组件(即必须依赖于中间容器才能显示),而Window组件类主要包括了一些可以独立显示的组件。鉴于此,可以讲Swing的组件分为三种类型:顶层组件、中间组件、基本组件,如下图:
顶层容器(即Window组件):JFrame、JApplet(比较过时了了)、JDialog、JWindow;
中间容器:JPanel、JScrollPane、JSplitPane、JToolBar;这些容器可以充当载体,但也是不可以独立显示的组件,必须依附在顶层容器内;
特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame、JLayeredPane等;
基本组件:实现人机交互的组件,如JButton、JComboBox、JList、JMenu、JTextField。
二、类库
Swing类库位于javax.swing包中:
JComponent类
JComponent类是java.swt包中容器类java.awt.Container类的子类,JComponent类的子类都是轻量级组件。
JLable 负责创建标签 JMenu 负责创建菜单对象 JMenuItem 负责创建菜单项对象 JPanel 负责创建面板对象 JPasswordField 负责创建口令文本框对象 JPopupMenu 负责创建弹出式菜单 JProgressBar 负责创建进程条 JRadioButton 负责创建单选按钮 JScrollBar 负责创建滚动条 JScrollPane 负责创建滚动窗格 JSlider 负责创建滑动条 JSplitPane 负责创建拆分窗格 JTable 负责创建表格 JTree 负责将分层数据显示为轮廓的控件
类的层次展示:
java.lang.Object java.awt.Component java.awt.Comtainer javax.swing.JComponent javax.swing.JPanel //一般用腿的中间容器 javax.swing.JScrollPane //一般用腿的中间容器 javax.swing.JSplitPane //一般用腿的中间容器 javax.swing.JTabbedPane //一般用腿的中间容器 javax.swing.JToolBar //一般用腿的中间容器 javax.swing.JInternalFrame //专用中间容器 javax.swing.JLayyeredPane //专用中间容器 javax.swing.JRootPane //专用中间容器 java.awt.Panel java.applet.Applet //顶级容器 javax.swing.JApplet java.awt.Window java.awt.Dialog //顶级容器 javax.swing.JDialog java.awt.Frame //顶级容器 javax.swing.JFrame java.swing.JWindow //顶级容器
布局管理器
AbsoluteLayout 绝对布局 BorderLayout 边界布局 java.awt.BorderLayout FlowLayout 流式布局 java.awt.FlowLayout GridLayout 网格布局 java.awt.GridLayout GridBagLayout java.awt.GridBagLayout CardLayout 卡片布局 java.awt.Layout.CardLayout BoxLayout 箱式布局 javax.swing.BoxLayout OverlayLayout javax.swing.OverlayLayout ScrollPaneLayout javax.swing.ScrollPaneLayout ViewportLayout javax.swing.ViewportLayout JGoodies FormLayout com.jgoodies.forms.layout.FormLayout MigLayout net.miginfocom.layout.MigLayout GroupLayout 网格布局 javax.swing.GroupLayout