當前位置:才華齋>計算機>java語言>

如何用Java建立一個簡單的Swing應用程式

java語言 閱讀(4.98K)

引導語:Swing是一組Java程式元件,它能夠建立圖象使用者介面(GUI)元件,如按鈕和滾動條,它們獨立於特定作業系統的開視窗系統。以下是本站小編分享給大家的如何用Java建立一個簡單的Swing應用程式,希望大家喜歡!

如何用Java建立一個簡單的Swing應用程式

先給出一段程式碼,這是一個很簡單的Swing程式,然後在對程式內容作詳細講述。

A simple Swing program

1 import g.*;

2 import .*;

3 public class SwingDemo{

4 public SwingDemo(){

5 JFrame jfrm=new JFrame("A Simple Swing Application");

6 ize(275,100);

7 efaultCloseOperation(_ON_CLOSE);

8 JLabel jlab=new JLabel("This is a text label.");

9 (jlab);

10 isible(true);

11 }

12 public static void main(String[] args){

13 keLater(new Runnable(){

14 public void run(){

15 new SwingDemo();

16 }

17 });

18 }

19 }

Swing是用來彌補AWT的不足的,但是不能取代它,所以Swing GUI程式開頭都是包含進來swing包和awt包。GUI程式不同於傳統的控制檯程式,它可是有個很形象的視窗呈現給使用者的,所以實現出來顯得很親切,我們從實現出來的這個視窗來推理下程式碼應該包括什麼內容。視窗是windows裡最常見的了,一個窗口裡有標題欄工具欄按鈕等等一系列的元件,這些元件不是漂浮於空中的,而是生存在這個窗口裡的,這個視窗對應著Swing程式裡的容器這個概念。大體上就是這樣的過程:先設計出容器,再設計出元件,然後把元件新增到容器中併合理的佈局,佈局完全是美觀的需要,這樣就寫出來一個SwingGUI程式了。注意這裡的容器和元件的關係看著很簡單,就是容器為根,它可以容納元件。然而實際的java類庫裡不是這麼看待二者的,容器和元件渾然一體的,容器也是一種元件,容器內也可以再放容器,簡單的說就是元件套元件,可以套元件的元件就叫容器了。這種包含層次的結構要求其頂部必須是一個頂級容器。Swing定義了4種頂級容器:JFrame,JApplet,JWindow,JDialog。這些容器繼承自AWT類的`Component和Container,說它們頂級是在 Swing的框架內說的,放到AWT中還是小弟,當不了老大,不過在Swing元件庫中確實一手遮天,表現在頂層容器不包含在任何其他的容器中並且每個包含層次必須從頂層容器開始,這4個容器稱作重量級容器。除了這4個頂級容器,其它的Swing元件都是從JComponent類派生的。例如用於標籤的類 JLabel,用於按鈕的類JButton,用於複選框的類JCheckBox。既然有重量級容器,同樣就有輕量級容器,如 JPanel,JScrollPane,JRootPane。這些當然也是派生自JComponent類了。它們經常用於組織和管理一組相關的元件。

關於Swing元件的基本體系搞懂了,接下來就考慮元件怎麼加到容器裡,程式碼第9行告訴了我們答案,看起來確實很簡單,再考慮一個問題,如果我加了很多元件進來,那麼這些元件怎麼擺放呢,這段程式碼只加了一個,看不出來問題,如果加了一堆元件進來會不會視窗顯得很凌亂呢。這就需要佈局管理器來幫忙了。程式碼中看不到佈局管理器物件,這是因為採用了預設的BorderLayout,注意這裡的預設是針對JFrame而言的,不同的頂級容器的預設佈局管理器可能不一樣。佈局管理器多數由AWT提供的,Swing也提供了自己的幾種,它們都是實現了LayoutManager介面的例項(某些還會實現 LayoutManager2介面)。

現在元件放到容器裡了,並且也合理的佈局了,還遺漏了一些問題,比如說這些元件(包括容器)該起個名字吧,不過這個不用操心,因為生成這個元件物件的時候就往建構函式裡傳了引數用來起名字了。還有個問題是容器的大小,假如容器芝麻的大小你卻往裡放個西瓜大的元件,根本顯示不出來嘛。所以容器是要定製大小的,setSize()可以滿足需要,一般的元件是不需要這個函式來定製大小的,大小都是隨容器變化的,所以芝麻大小的容器是不會塞一個西瓜大的元件的,但是卻是個比芝麻還小的元件,和顯示不出來區別不大。

到了這裡感覺還缺點什麼,對了,還缺事件的處理機制,比如說點關閉按鈕視窗會怎麼樣。這裡簡單的呼叫一個方法,setDefaultCloseOperation(),傳進的一個整型引數好比一個遙控器上的數字鍵,決定了這個操作的行為。事件的處理機制隱藏於這個方法的實現中。第10行的setVisible()作用是顯示框架,初學者可能會忘記,不過這幾乎是GUI程式碼的必備語句。最後的main方法看著有點不知所云,簡單解釋下,在所有情況下,Swing GUI必須通過使用invokeLater()在事件排程執行緒上建立。這行程式碼硬記住就行了。從語法上說用了一個匿名類。