1. 从结构上划分windows
Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些能够独立显示的组件,而JComponent类包含的是不能够独立显示的组件.ide
什么是可独立显示的组件和不可独立显示的组件?spa
可独立显示的组件:当运行一个程序时,可独立显示的组件无需在其余组件上便可显示,即它能够直接显示出来,例如JFrame类.设计
不可独立显示的组件:运行时,必须依靠可独立显示的组件才能将其显示出来,如JLabel类,JButton类,得托付在相似于JFrame类上才能显示出来.code
2.从功能上划分blog
从功能上划分分为:顶层组件,中间组件和基本组件.get
顶层容器:JFrame,JDialog,JApplet,JWindow.所谓的顶层容器,也就是以前讲的Window组件,是能够独立显示的.it
中间容器:JPanel,JScrollPane,JSplitPane,JToolBar.所谓的中间容器也就是指那些能够充当载体可是不能独立显示的组件,就是一些基本组件能够依托在其中,可是也不能独立显示,必须依托在顶层容器中才行.io
特殊容器:在GUI上其特殊做用的中间层,如JInternalFrame,JLayeredPane,JRootPane.这里的特殊容器其实也是中间容器类的一种,只不过在图形上更加可以起到专业和美化的做用.class
基本组件:能起到人机交互的组件,如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); } }
这样就达到了咱们的设计目的.