swing基本组件的组件层次
swing的底层是java.awt.Component(Component即我们之前学的组件类)
java.awt.Component有一个子类是java.awt.Container(Container即我们之前学的容器类) java.awt.Container有一个子类是java.Swing.JComponent
java.Swing.JComponent有很多直接或间接的子类,如下:
AbstractButton、BOX、JColorChooser、JComboBox、JFileChooser、JInternlFrame、JLabel、JLayer、JLayeredPane、JList、JMenuBar、JOptionPane、JPanel、JPopupMenu、JProgressBar、JRootPane、JscrollBar、JScrollPane、JSeparator、JSlider、JSplitPane、JTabledPane、JTable、JTextComponent、JTooBar、JTollTip、JToolTree
上面那些java.Swing.JComponent提供的子类都间接继承了java.awt.Container
java.awt.Container类里面有两个子类java.awt.Panel、java.awt.Window
java.awt.Panel的子类是java.awt.Applet,java.awt.Applet的子类是java.swing.JApplet
java.awt.Window有三个子类是java.awt.Frame(即我们之前学的窗口)、java.awt.Dialog(即我们之前学的对话框)、javax.swing.JWindow java.awt.Frame的子类是java.swing.JFrame java.awt.Dialog的子类是java.swing.JDialog
总结:大部分Swing组件都是JComponent抽象类的直接或间接子类(并不是全部的Swing组件),JComponent类定义了所有子类组件的通用方法,JComponent类是AWT里java.awt.Container类的子类,这也是AWT和Swing的联系之一。 绝大部分Swing组件类继承了Container类,所以Swing组件都可作为容器使用(JFrame继承了Frame类)
Swing组件和AWT组件的对应关系:
大部分情况下,只需要在AWT组件的名称前面加个J,就可以得到其对应的Swing组件名称,但有几个例外,如下
1、JComboBox: 对应于AWT里的Choice组件(即下拉选择框),但比Choice组件功能更丰富 2、JFileChooser: 对应于AWT里的FileDialog组件(文件对话框) 3、JScrollBar: 对应于AWT里的Scrollbar组件(滚动条),注意两个组件类名中b字母的大小写差别 4、JCheckBox: 对应于AWT里的Checkbox组件,注意两个组件类名中b字母的大小写差别 5、JCheckBoxMenultem: 对应于AWT里的CheckboxMenultem组件,注意两个组件类名中b字母的大小写差别
Swing组件按照功能来分类: 1、顶层容器(即最外层的窗口容器):JFrame、JApplet、JDialog、JWindow 2、中间容器(中间容器不能单独存在,需要依赖于顶层容器): JPanel、JScrollPane、JSplitPane、JToolBar 3、特殊容器:在用户界面上具有特殊作用的中间容器,如JIntemalFrame 、 JRootPane 、 JLayeredPane、JDestopPane 4、基本组件:实现人机交互的组件,如JButton、 JComboBox、JList、JMenu、 JSlider 5、不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如JLabel、JProgressBar、JToolTip 6、可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如JTable 、 JTextArea、JTextField 7、特殊对话框组件:可以直接产生特殊对话框的组件,如JColorChooser(即颜色选择器)、JFileChooser(即文件选择器)