Java 基於Swing的簡單圖形用戶界面設計

JComponent類的部分子類以及JFrame類和JDialog類java

1.容器類(Container)和組件類(Component)編輯器

Java把由Component類的子類或間接子類建立的對象稱爲一個組件;把由Container的子類或間接子類建立的對象稱爲一個容器。佈局

  • 能夠向容器添加組件。Container類提供了一個public方法add(),一個容器能夠調用這個方法將組件添加到該容器中。
  • 調用removeAll()方法能夠移掉容器中的所有組件,調用remove(Component c)方法能夠移掉容器中參數指定的組件。
  • 每當容器添加新的組件或移掉組件時,應該讓容器調用validate()方法,以保證容器中的組件能正確顯示出來。

容器自己也是一個組件,所以能夠把一個容器添加到另外一個容器中實現容器的嵌套。spa

java.swing包中有4個最重要的類JApplet,JFrame,JDialog和JComponent。設計

 

 

 

2.JFrame窗體3d

avax.swing包中的JFrame類是java.awt包中Frame類的子類,所以JFrame類其子類建立的對象是窗體。    對象

當應用程序須要一個窗口時,可以使用JFrame或其子類建立一個對象。窗口默認地被系統添加到顯示器屏幕上,所以不容許將一個窗口添加到另外一個容器中。Frame類經常使用方法以下:blog

  • JFrame()  建立一個無標題的窗口。
  • JFrame(String s)  建立一個標題爲s的窗口。
  • public void setBounds(int a,int b,int width,int height)設置出如今屏幕上時的初始位置爲(a,b),即距屏幕左面a個像素、距屏幕上方b個像素;窗口的寬是width,高是height。
  • public void setSize(int width,int height) 設置窗口的大小,在屏幕出現默認位置是(0,0)。
  • public void setVisible(boolean b)  設置窗口是可見仍是不可見,窗口默認是不可見的。
  • public void setResizable(boolean b) 設置窗口是否可調整大小,窗口默認是可調整大小的。
  • public void setDefaultCloseOperation(int operation) 該方法用來設置單擊窗體右上角的關閉圖標後,程序會作出怎樣的處理。其中的參數operation取下列有效值: 1) DO_NOTHING_ON_CLOSE 什麼也不作 2)HIDE_ON_CLOSE 隱藏當前窗口 3)DISPOSE_ON_CLOSE 隱藏當前窗口,並釋放窗體佔有的其餘資源 4)EXIT_ON_CLOSE 結束窗體所在的應用程序    這4個常量都是JFrame類中的static常量,單擊關閉圖標後,程序根據operation取值作出不一樣的處理。

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類的主要方法有如下幾種:

  • JMenuItem(String s)  構造有標題的菜單項。
  • JMenuItem(String text, Icon icon) 構造有標題和圖標的菜單項 
  • public void setEnabled(boolean b)設置當前菜單項是否可被選擇。 
  • public String getLabel() 獲得菜單項的名字。 
  • public void setAccelerator(KeyStroke keyStroke) 爲菜單項設置快捷鍵。

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。

相關文章
相關標籤/搜索