码路心路知行合一 2012-03-14
Jcomponent是一个抽象类,用于定义所有子类组件的一般方法,其类层次结构如下所示:
Java.lang.Object
|
+--Java.awt.Component
|
+--Java.awt.Container
|
+--Javax.swing.JComponent
并不是所有的Swing组件都继承于JComponent类,JComponent类继承于Container类,所以凡是此类的组件都可作为容器使用。
组件从功能上分可分为:
1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个
2)中间容器:JPanel,JScrollPane,JSPlitPane,JToolBar
3)特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.
4)基本控件:实现人机交互的组件,如Jbutton,JComboBox,JList,JMenu,JSlider,JtextField。
5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip。
6) 可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser, JFileChoose, JFileChooser, Jtable, JtextArea。1.1 使用Swing的基本规则
与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(contentpane)上。内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。基本规则如下:
(1)把Swing组件放入一个顶层Swing容器的内容面板上
(2)避免使用非Swing的重量级组件。 对JFrame添加组件有两种方式:
1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)J
2)建立一个Jpanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:
JpanelcontentPane=newJpanel();
……//把其它组件添加到Jpanel中;
frame.setContentPane(contentPane);J
//把contentPane对象设置成为frame的内容面板