1. 从结构上划分
Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些可以独立显示的组件,而JComponent类包含的是不可以独立显示的组件.
什么是可独立显示的组件和不可独立显示的组件?
可独立显示的组件:当运行一个程序时,可独立显示的组件无需在其他组件上即可显示,即它可以直接显示出来,例如JFrame类.
不可独立显示的组件:运行时,必须依靠可独立显示的组件才能将其显示出来,如JLabel类,JButton类,得托付在类似于JFrame类上才能显示出来.
2.从功能上划分
从功能上划分分为:顶层组件,中间组件和基本组件.
顶层容器:JFrame,JDialog,JApplet,JWindow.所谓的顶层容器,也就是之前讲的Window组件,是可以独立显示的.
中间容器:JPanel,JScrollPane,JSplitPane,JToolBar.所谓的中间容器也就是指那些可以充当载体但是不能独立显示的组件,就是一些基本组件可以依托在其中,但是也不能独立显示,必须依托在顶层容器中才行.
特殊容器:在GUI上其特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.这里的特殊容器其实也是中间容器类的一种,只不过在图形上更加能够起到专业和美化的作用.
基本组件:能起到人机交互的组件,如JButton,JLabel,JComboBox,JList,JMenu,JSlider,JTextField.
注:要添加基本组件,一定要添加中间容器来承载.
以下示例能很好的描述这个问题:
public class Test { public static void main(String[] args) { JButton jButton = new JButton("test"); }}
这段代码运行后没有任何显示.
再看这段代码
public class Test { public static void main(String[] args) { JFrame jFrame = new JFrame("test"); JButton jButton = new JButton("test"); jButton.setSize(10,20); jFrame.add(jButton); jFrame.setSize(400,300); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }}
运行结果如图所示:
尽管设置了jButton的大小为10,20.但是依然充满了整个Frame.
为了实现jButton的大小为10,20,必须添加一个中间容器来承载才行.
再看如下代码:
public class Test { public static void main(String[] args) { JFrame jFrame = new JFrame("test"); JButton jButton = new JButton("test"); JPanel pane = new JPanel(); jFrame.setContentPane(pane); jButton.setSize(10,20); jFrame.setSize(400, 300); pane.add(jButton); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }}
运行结果:
这样就达到了我们的设计目的.