JComponent類的部分子類以及JFrame類和JDialog類java
1.容器類(Container)和組件類(Component)編輯器
Java把由Component類的子類或間接子類建立的對象稱爲一個組件;把由Container的子類或間接子類建立的對象稱爲一個容器。佈局
容器自己也是一個組件,所以能夠把一個容器添加到另外一個容器中實現容器的嵌套。spa
java.swing包中有4個最重要的類JApplet,JFrame,JDialog和JComponent。設計
2.JFrame窗體3d
avax.swing包中的JFrame類是java.awt包中Frame類的子類,所以JFrame類其子類建立的對象是窗體。 對象
當應用程序須要一個窗口時,可以使用JFrame或其子類建立一個對象。窗口默認地被系統添加到顯示器屏幕上,所以不容許將一個窗口添加到另外一個容器中。Frame類經常使用方法以下:blog
3.菜單組件索引
菜單放在菜單條裏,菜單項放在菜單裏。資源
1):JMenuBar菜單條
JComponent類的子類JMenuBar是負責建立菜單條的,即JMenuBar的一個實例就是一個菜單條。
JFrame類有一個將菜單條放置到窗口中的方法:
public void setJMenuBar(JMenuBar menubar);
該方法將菜單條添加到窗口的菜單條區域(注意:只能向窗口添加一個菜單條)
2):JMenu菜單
JComponent類的子類JMenu類是負責建立菜單的,即JMenu的一個實例就是一個菜單。JMenu類的主要方法有如下幾種:
JMenu(String s) 創建一個指定標題菜單,標題由參數s肯定
public void add(MenuItem item) 向菜單增長由參數item指定的菜單選項對象。
public void add(String s) 向菜單增長指定的選項。
public JMenuItem getItem(int n) 獲得指定索引處的菜單選項。
public int getItemCount() 獲得菜單選項數目。
3):JMenu菜單
JComponent類的子類JMenu類是負責建立菜單的,即JMenu的一個實例就是一個菜單。JMenu類的主要方法有如下幾種:
JMenu(String s) 創建一個指定標題菜單,標題由參數s肯定
public void add(MenuItem item) 向菜單增長由參數item指定的菜單選項對象。
public void add(String s) 向菜單增長指定的選項。
public JMenuItem getItem(int n) 獲得指定索引處的菜單選項。
public int getItemCount() 獲得菜單選項數目。
4):JMenuItem菜單項
JMenuItem是Menu的父類,該類是負責建立菜單項的,即JMenuItem的一個實例就是一個菜單項。菜單項放在菜單裏。JMenuItem類的主要方法有如下幾種:
5):嵌入子菜單
JMenu是JMenuItem的子類,所以菜單項自己還能夠是一個菜單,這樣的菜單項稱爲子菜單。
爲了使得菜單項有一個圖標,能夠用圖標類Icon聲明一個圖標,而後使其子類ImageIcon建立一個圖標,如:
Icon icon=new ImageIcon(「」);
4.佈局設計
java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout佈局類和java.swing.border包中的BoxLayout佈局類。
容器可使用
setLayout(佈局對象);
來設置本身的佈局。
對於JFrame窗口,默認佈局是BorderLayout佈局。
1):FlowLayout佈局
構造方法:FlowLayout();能夠建立一個居中對齊的佈局對象,如:
FlowLayout flow=new FlowLayout();
con.setLayout(flow);容器con使用flow這個佈局對象
FlowLayout佈局對象調用setAlignment(int aligin)方法能夠從新設置佈局的對齊方式,其中align能夠取值FlowLayout.LEFT、FlowLayout.CENTER或FlowLayout.RIGHT。
FlowLayout佈局對象調用setHgap(int hgap)方法和setVgap(int vgap)方法能夠從新設置佈局的水平間隙和垂直間隙。
如須要改變最佳大小,組件需調用:
public void setPreferredSize(Dimension preferredSize)
設置大小。例如:button.setPreferredSize(new Dimension(20,20));
注:對於添加到使用FlowLayout佈局的容器中的組件,組建調用setSize(int x,int y)設置的大小無效。
2):BorderLayout佈局是Window容器的默認佈局。
JFrame、JDialog都是Window類的間接子類,它們的內容面板的默認佈局都是BorderLayout佈局。
若是一個容器使用這種佈局,那麼容器空間簡單地劃分爲東、西、南、北、中五個區域,區域由BorderLayout中的靜態常量CENTER、NORTH、SOUTH、WEST、EAST表示。
例如:
一個使用BorderLayout佈局的容器con,可使用add()方法將一個組件b添加到中心區域:
con.add(b,BorderLayout.CENTER);或con.add(BorderLayout.CENTER,b);
注:添加到某個區域的組件將佔據整個這個區域,這個區域只能放置一個組件,若是向某個已放置了組件的區域再放置一個組件,那麼先前的組件將被後者替換。
注:使用BorderLayout佈局的容器最多能添加5個組件,若是容器中須要添加的組件超過5個,就必須使用容器的嵌套或改用其餘佈局策略。
3):CardLayout佈局
使用CardLayoutu容器能夠容納多個組件,但同一時刻容器只能從這些組件中選出一個來顯示,就像一疊「撲克牌」每次只能顯示最上面的一張同樣,這個被顯示的組件將佔據全部的容器空間。
JtabbedPane窗格的默認佈局是CardLayout佈局,而且自帶一些選項卡,這些選項卡與用戶添加到JTabbedPane窗格中的組件相對應,單機該選項卡,JTabbedPane窗格將顯示對應的組件,選項卡窗格自帶的選項卡默認的在該選項卡窗格的頂部,從左向右一次排列,選項卡的順序和所對應的組件的順序相同。
JTabbedPane窗格可使用add(String text,Component c);方法將組件c添加到JTabbedPane窗格中,並指定和組件c對應的選項卡的文本提示是text。
使用JTabbedPane窗格的構造方法
public JTabbedPane(int tabPlacement)建立的選項卡窗格的選項卡的位置由參數tabPlacement指定,該參數的有效值爲JTabbedPane.TOP、JTtabbedPane.BOTTOM、JTabbedPane.LEFT 和JTabbedPane.RIGHT。
4):GridLayout佈局
GridLayout是使用較多的佈局編輯器,其基本佈局策略是把容器劃分紅若干行若干列的網格區域,組件就位於這些劃分出來的小格中。GridLayout比較靈活,劃分多少網格由程序自由控制,並且組件定位也比較精確,使用GridLayout佈局編輯器的通常步驟以下:
(1)使用GridLayout的構造方法GridLayout(int m,int n)建立佈局對象,指定劃分網格的行數m和列數n,如 GridLayout grid=new GridLayout(10,8);
(2)使用GridLayout佈局的容器調用方法add()將組件加入容器,組件進入容器的順序將按照第一行第一個、第一行第二個…第一行最後一個、第二行第一個…最後一行第一個…最後一行最後一個。
使用GridLayout佈局的容器最多可添加m×n個組件。GridLayout佈局中每一個網格都是相同大小,而且強制組件與網格的大小相同。
因爲GridLayout佈局中每一個網格都是相同大小而且強制組件與網格的大小相同,使得容器中的每一個組件也都是相同的大小,顯得很不天然。爲了克服這個缺點,可使用容器嵌套。例如,一個容器使用GridLayout佈局,將容器分爲三行一列的網格,那麼能夠把另外一個容器添加到某個網格中,而添加的這個容器又能夠設置爲GridLayout佈局、FlowLayout佈局、CarderLayout佈局或BorderLayout佈局等。利用這種嵌套方法,能夠設計出符合必定須要的佈局。
5):BoxLayout佈局
用BoxLayout類能夠建立一個佈局對象,稱爲盒式佈局。BoxLayout在java.swing.border包中。java swing包提供了Box類,該類也是Container類的一個子類,建立的容器稱爲一個盒式容器。盒式容器的默認佈局是盒式佈局,並且不容許更改盒式容器的佈局。所以,在策劃程序的佈局時,能夠利用容器的嵌套,將某個容器嵌入幾個盒式容器,達到佈局目的。
BoxLayou的構造方法BoxLayout(Container con,int axis)能夠建立一個盒式佈局對象,並指定容器con使用該佈局對象,參數axis的有效值是BoxLayout.X_AXIS和BoxLayout.Y_AXIS。
Box類的類(靜態)方法createHorizontalBox()能夠得到一個具備行型盒式佈局的盒式容器;Box類的類(靜態)方法createVerticalBox()能夠得到一個具備列型盒式佈局的盒式容器。
控制盒式佈局容器中組件之間的距離,須要使用水平支撐或垂直支撐。
Box類調用靜態方法createHorizontalStrut(int width)能夠獲得一個不可見的水平Struct類型對象.稱爲水平支撐.該水平支撐的高度爲0,寬度是width。
Box類調用靜態方法createVertialStrut(int height)能夠獲得一個不可見的垂直Struct類型對象,稱爲垂直支撐.參數height決定垂直支撐的高度,垂直支撐的寬度爲0。