swing入門教程(一) swing簡介
——Swing 是 Java 平臺的 UI 。
UI 元件簡介
在開始學習 Swing 之前,必須回答針對真正初學者的一個問題:什麼是 UI?初學者的答案是“使用者介面”。但是因為本教程的目標是要保證您不再只是個初學者,所以我們需要比這個定義更高階的定義。
所以,我再次提出這個問題:什麼是 UI?您可能把它定義成您按下的按鈕、打字的位址列 、開啟和關閉的視窗,等等,這些都是 UI 的元素,但是除了在螢幕上看到的這些之外,還有更多都是 UI 元素。比如滑鼠、鍵盤、音量、螢幕顏色、使用的字型,以及一個物件相對於另一個物件的位置,這些都包含在 UI 之中。實際上,在計算機和使用者的互動之中扮演角色的任何物件都是 UI 的組成部分。這看起來足夠簡單,但是您應當驚訝的是,有許多人和大型公司已經為它努力了很多年。實際上,現在有的大學專業的惟一課程就是研究這種互動。
Swing 的角色
Swing 是 Java 平臺的 UI —— 它充當處理使用者和計算機之間全部互動的軟體。它實際上充當使用者和計算機內部之間的中間人。Swing 到底是如何做這項工作的呢?它提供了處理前面一節中描述的 UI 各方面內容的機制:
鍵盤:Swing 提供了捕捉使用者輸入的方法。
顏色:Swing 提供改變在螢幕上看到的顏色的方法。
打字的位址列:Swing 提供了文字元件,處理所有普通任務。
音量:Swing 不太擅長。
無論如何,Swing 為您提供了建立自己的 UI 所需要的所有工具
MVC
Swing 甚至走得更遠一步,在基本的 UI 原則之上又放上了一個公共的設計模式。這個設計模式叫做模型-檢視-控制器(Model-View-Controller,MVC),它試圖“把角色分開”。MVC 讓負責顯示的程式碼、處理資料的程式碼、對互動進行響應並驅動變化的程式碼彼此分離。
有點迷惑?如果我為這個設計模式提供一個現實世界的非技術性示例,它就比較容易了。請想像一次時裝秀。把秀場當成 UI,假設服裝就是資料,是展示給使用者的計算機資訊。現在,假設這次時裝秀中只有一個人。這個人設計服裝、修改服裝、同時還在 T 臺上展示這些服裝。這看起來可不是一個構造良好的或有效率的設計。
現在,假設同樣的時裝秀採用 MVC 設計模式。這次不是一個人做每件事,而是將角色分開。時裝模特(不要與 MVC 縮寫中的模型混淆)展示服裝。他們扮演的角色是檢視。他們知道展示服裝(資料的)適當方法,但是根本不知道如何建立或設計服裝。另一方面,時裝設計師充當控制器。時裝設計師對於如何在 T 臺上走秀沒有概念,但他能建立和操縱服裝。時裝模特和設計師都能獨立地處理服裝,但都有自己的專業領域。
這就是 MVC 設計模式背後的概念:讓 UI 的每個方面處理它擅長的工作。如果您仍然不明白,那麼教程後面的示例有望消除您的迷惑 —— 但是在您繼續進行的時候,請記住基本的原則:用可視元件顯示資料,同時讓其他類操縱資料。
JComponent
Swing 的整個可視元件庫的基礎構造塊是 JComponent。它是所有元件的父類。它是一個抽象類,所以不能建立 JComponent,但是作為類層次結構的結果,從字面意義來說它包含了數百個函式,Swing 中的每個元件都可以使用這些函式。顯然,有些概念要比其他概念重要,所以對於本教程,需要學習的重要的東西是:
JComponent 不僅是 Swing 元件的基類,還是定製元件的基類(有關的更多資訊在“中級 Swing”教程中)。
它為所有元件提供了繪製的基礎架構 —— 一些方便進行元件定製的東西(同樣,在“中級 Swing”中,有關於這個主題的更多資訊)。
它知道如何處理所有的鍵盤按鍵。所以類只需要偵聽特定的鍵。
它包含 add() 方法,可以新增其他 JComponent。換種方式來看,可以把任意 Swing 元件新增到其他任何 Swing 元件,從而構造巢狀元件(例如,JPanel 包含 JButton,甚至包含一些古怪的組合,例如 JMenu 包含 JButton)。