1. 程式人生 > 其它 >暑假自學java第十八天-----初識GUI

暑假自學java第十八天-----初識GUI

良好圖形使用者介面(Graphical User Interface ,簡稱GUI):使用者通過滑鼠對軟體的視窗、選單、列表框、對話方塊等圖形元件進行操作,可以方便地使用軟體。

Java對GUI的支援包括基本控制元件、介面容器事件機制、佈局設計、圖形和影象等,並提供了大量的類用於實現介面設計,主要有AWT工具集和Swing工具集。

抽象視窗工具集(AWT)

AWT是Abstract Window Toolkit 的縮寫,稱為抽象視窗工具集,開發圖形介面的應用程式時,需要用到AWT。AWT是Java開發工具包(JDK)的一部分,是Java基本類(JFC)的核心。AWT的作用是給使用者提供基本的介面元件,如視窗、按鍵、選單等。此外,AWT還提供事件處理結構,支援剪貼簿、資料傳輸和影象操作。

AWT中類與類之間的關係如下圖,AWT由 java. awt包提供,該包中有許多用來設計使用者介面的類和介面,使用者可在Java Application或Applet 中進行GUI設計。AWT包含四個主要的類:元件(Component)類、容器(Container)類、圖形 ( Graphics)類和佈局管理器( LayoutManager)類。

Swing元件簡介

.Swing元件由javax. swing包提供,是內容豐富、功能強大的輕量級元件。Swing 元件與AWT元件不同,顯示及事件處理等工作都由Java編寫的UI類來完成。輕量級元件佔用資源較少,效率較高,顯示外觀與平臺無關,功能更強、更靈活。Swing元件是純Java語言實現的,並不依賴本地的工作平臺,Swing具有和AWT同性質的元件,如按鈕等。從命名的角度看,Swing元件的名稱都以字母“J”作為首字母,如AWT 按鈕元件命名為Button,而Swing的按鈕元件命名為JButton。Swing元件的結構如下圖所示。Swing還定義了其他應用元件,如樹元件、表元件和列表元件等。

這兩個元件的區別:

( 1 ) Swing標籤和按鈕可以顯示文字和圖片,AWT中同性質的元件只能顯示文字。

(2)使用者可以定義Swing元件的外觀,而AWT元件的外觀取決於本地作業系統。

(3 ) Swing具有良好的可擴充套件性,使用者可以擴充套件或自定義元件,而AWT元件的擴充套件性較差。

JComponent元件:

JComponent類是java. awt包中容器類Container 的子類,因此所有繼承自JComponent類的輕量級元件也都是容器。注意,不能把元件直接新增到Swing窗體中,應當把元件新增到Swing窗體所包含的一個稱為內容面板的容器中。在Swing窗體的內容面板中,儘量只使用輕量元件,否則可能會出現意想不到的問題。Swing窗體通過呼叫public Container getCon-tentPane()方法獲取它的內容面板。

JFrame元件

JFrame元件是與AWT中的Frame元件相對應的Swing 元件,繼承自java awt. Frame類,功能與Frame元件類似。JFrame中只能有一個元件JRootPane,呼叫JFrame. getContentPane( )方法可獲得JFrame中內建的JRootPane物件,應用程式不能直接在JFrame例項物件上增加元件和設定佈局管理器,應該在.JRootPane物件上增加子元件和設定佈局管理器。JDK5.0之後,重寫了add ( Component comp)和setLayout . ( LayoutManager l)方法,直接呼叫這兩個方法也可以操作JContentPane物件。當用戶單擊JFrame的關閉按鈕時,JFrame會自動隱藏,但沒有關閉,可以在windowClosing事件中關閉,更常用的關閉方式是呼叫JFrame的相應方法。

SWing 工具集的其他常用元件

1. JLabel元件

標籤元件用於顯示文字資訊、圖示或二者的組合。JLabel元件不響應使用者的輸入,即JLabel元件不能編輯。JLabel元件可以將內容垂直或水平顯示,通常預設文字資訊的顯示狀態為水平,而圖示的顯示狀態為垂直。標籤元件一般用於提示資訊。

2.JTextField元件

JTextField元件用於建立文字框,文字框位於接受單行文字資訊輸入的區域,通常用於接受使用者資訊或其他文字資訊的輸入。當用戶輸入文字資訊後,如果為JTextField物件添加了事件處理,按回車鍵會觸發一定的動作。JPasswordField是JtextField的子類,是一種特殊的文字框,也位於接受單行文字資訊輸入的區域,但會用回顯字串代替輸入的文字資訊。JPasswordField元件也稱為密碼文字框,JPasswordField 預設的回顯字元是“*”,使用者可以自行設定回顯字元。

3. JTextArea元件

JTextArea元件是文字區元件,與JTextField元件一樣能接受文字資訊的輸入和顯示。與JTextField元件不同的是,JTextArea物件可以實現文字多行輸入和顯示,突破了JTextField元件單行輸入的限制。但是,如果文字資訊的行數超過文字區限定的行數,超出的文字資訊不能顯示,為了解決這個問題,可以藉助JScrollPane滾動窗格元件。將文字區放置到滾動窗格中,即可實現超出文字資訊的滾動輸出,實現語法為: new JScrollPane (JTextArea文字區物件)。

4. JButton元件

JButton元件用於建立按鈕,當用戶按下按鈕時會觸發一定的動作。JButton元件建立的按鈕可以顯示圖示和文字資訊,用於有效地提示及幫助使用者操作。

5.複選框和單選框

JCheckBox 元件用於建立具有文字和圖示的複選框,這種複選框具有“選中”和“取消選中”兩種狀態,通過使用者的選擇實現轉換。通常,用多個複選框作為一組組合條件,使用者可以同時選擇多個複選框。

JRadioButton元件用於建立具有文字和圖示的單選按鈕,和JCheckBox元件一樣,具有“選中”和“取消選中”兩種狀態。可以定義一個或多個單選按鈕並新增到一個 Button-Group按鈕組作為整體進行處理。在任何情況下,一個按鈕組中只能有一個單選按鈕處於“選中”狀態。因此,通常定義包含多個單選按鈕的按鈕組實現在多個條件中選擇一個的功能。

6. JComboBox元件

JComboBox 元件用於建立組合框物件,根據組合框是否可編輯的狀態,可以將組合框分成兩種常見的外觀。可編輯狀態下的外觀視為文字框和下拉列表的組合,不可編輯狀態下的外觀可視為按鈕和下拉列表的組合。在按鈕或文字框的右邊有一個帶有下三角符號的下拉按鈕。通過單擊該下拉按鈕,可以出現一個內容列表。組合框通常用於從列表的“多個專案中選擇一個”的操作。

7. JList元件

JList元件用於定義列表,允許使用者選擇一個成多個專案,與JTextArea類似,JList本身不支援滾動條功能。