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); } }
這樣就達到了咱們的設計目的.