Swing是一個用於開發Java應用程式使用者介面的開發工具包(GUI工具包),是JAVA基礎類別的一部分;它包括了圖形使用者介面(GUI)裝置,如:文字框,按鈕,分隔窗格和表格。
Swing提供許多比AWT更好的螢幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平台運行,這一點不像AWT。它們是JFC的一部分。它們支援可更換的面板和主題(各種作業系統預設的特有主題),然而不是真的使用原生平台提供的設備,而是僅僅在表面上模仿它們。這意味著你可以在任意平台上使用JAVA支援的任意麵板。輕量級元件的缺點是執行速度較慢,優點就是可以在所有平台上採用統一的行為。
Swing 類別庫結構
Swing 元件都採用MVC(Model-View-Controller,即模型-視圖-控制器)的設計,實作GUI 元件的顯示邏輯和資料邏輯的分離,從而允許程式設計師自訂Render 來改變GUI 元件的顯示外觀,以提供更多的靈活性。
Swing 圍繞著 JComponent 元件構建,JComponent 則由 AWT 的容器類別擴展而來。
Swing類別庫組織結構圖:
可以看出,Swing 元件除了 AbstmctButton 類別之外都以 J 開頭。 Swing 容器元件直接繼承 AWT 類別庫中的容器元件類,其他大部分元件都是繼承 JComponet 元件。元件可以分割為容器元件和非容器元件,容器元件包括 JFmme 和 JDialog。其中 JComponent 定義了非容器類別的輕量級元件(JBntton、JPanel、JMenu 等)。
Swing 套件
Swing 類別庫由許多套件組成,透過這些套件中的類別相互協作來完成 GUI 設計。其中,javax.swing 套件是 Swing 提供的最大套件,它包含將近 100 個類別和 25 個介面。幾乎所有 Swing 元件都在該包中。表 1 列出了常用的 Swing 包。
套件名稱 | #描述 |
---|---|
javax.swing | 提供一組「輕量級」元件,盡量讓這些元件在所有平台上的工作方式都相同 |
javax.swing.border | 提供圍繞Swing 元件繪製特殊邊框的類別和介面 |
javax.swing.event | 提供Swing 元件觸發的事件 |
javax.swing.event 套件中定義了事件和事件監聽器類,javax.swing.event 套件與 AWT 的 event 套件類似。 Java.awt.event 和 javax.swing.event 都包含事件類別和監聽器接口,它們分別回應由 AWT 元件和 Swing 元件觸發的事件。
例如,當在樹組件中需要節點擴展(或折疊)的通知時,則要實現Swing 的TreeExpansionListener 接口,並把一個TreeExpansionEvent 實例傳送給TreeExpansionListener 接口中定義的方法,而TreeExpansionListener 和TreeExpansionListEvent都是在swing.event 套件中定義的。
雖然 Swing 的表格元件(JTable)在 javax.swing 套件中,但它的支援類別卻在 javax.swing.table 套件中。表格模型、圖形繪製類別和編輯器等也都在 javax.swing.table 套件中。
與 JTable 類別一樣,Swing 中的樹 JTree(用於按層次組織資料的結構元件)也在 javax.swing 套件中,而它的支援類別卻在 javax.swing.tree 套件中。 javax.swing.tree 套件提供樹模型、樹節點、樹單元編輯類別和樹繪製類別等支援類別。
Swing 容器
建立圖形使用者介面程式的第一步是建立一個容器類別以容納其他元件,常見的視窗就是一種容器。容器本身也是一種元件,它的功能就是用來組織、管理和顯示其他元件。
Swing 中容器可分為兩類:頂層容器和中間容器。
頂層容器是進行圖形程式設計的基礎,一切圖形化的東西都必須包含在頂層容器中。頂層容器是任何圖形介面程式都要涉及的主窗口,是顯示並承載組件的容器組件。在 Swing 中有三種可以使用的頂層容器,分別是 JFrame、JDialog 和 JApplet。
● JFrame:用於框架視窗的類,此視窗帶有邊框、標題、關閉和最小化視窗的圖示。帶有 GUI 的應用程式至少使用一個框架視窗。
● JDialog:用於對話方塊的類別。
● JApplet:用於使用 Swing 元件的 Java Applet 類別。
中間容器是容器組件的一種,也可以承載其他元件,但中間容器不能獨立顯示,必須依附於其他的頂層容器。常見的中間容器有 JPanel、JScrollPane、JTabbedPane 和 JToolBar。
● JPanel:表示一個普通面板,是最靈活、最常用的中間容器。
● JScrollPane:與 JPanel 類似,但它可在大的組件或可擴展組件周圍提供滾動條。
● JTabbedPane:表示選項卡面板,可以包含多個元件,但一次只顯示一個元件,使用者可在元件之間方便切換。
● JToolBar:表示工具列,按行或列排列一組元件(通常是按鈕)。
在 Java 程式中容器類別都是繼承自 Container 類別。中間容器和頂層容器在,AWT 套件和Swing 套件中繼承Container 類別的繼承關係,如圖所示(容器類別組織結構圖):
##推薦學習:以上是什麼是java swing?的詳細內容。更多資訊請關注PHP中文網其他相關文章!