Swing (Java)
Swing 是一個為Java設計的GUI工具包。 Swing 是 JAVA基礎類 的一部分。 Swing 包括了圖形用戶界面 (GUI) 器件 如:文本框,按鈕,分隔窗格和表。
SWING 提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平台運行,這一點不像AWT。 它們是JFC的一部分。 它們支持可更換的面板和主題(各種作業系統默認的特有主題),然而不是真的使用原生平台提供的設備,而是僅僅在表面上模仿它們。這意味着你可以在任意平台上使用JAVA支持的任意面板。 輕量級元件的缺點則是執行速度較慢,優點就是可以在所有平台上採用統一的行為。
程序
Swing程序
HelloWorldSwing 的代碼:
import javax.swing.*; public class HelloWorldSwing { /** * 创建并显示GUI。 出于线程安全的考虑, * 这个方法在事件调用线程中调用。 */ private static void createAndShowGUI() { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. JFrame frame = new JFrame("HelloWorldSwing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Add the ubiquitous "Hello World" label. JLabel label = new JLabel("Hello World"); frame.getContentPane().add(label); //Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
歷史
互聯網基礎類(IFC)是網景公司最初為Java開發的圖形庫,第一次發佈於1996年12月16日。
在1997年4月2日,太陽公司和網景公司宣稱他們要將IFC和其他技術合併形成Java基礎類。作為IFC最初提供組件的附加品,Swing引進了一個機制:在不改變大量的程序代碼前提下允許程序中每個組件面板的變化。支持可更換面板技術的引入允許Swing組件在模擬原生組件外觀的同時又保持了平台獨立的優點。
同AWT的關係
Java的早期版本以來, 抽象視窗工具包 為用戶界面組件提供了平台獨立的API。在AWT中,每個組件都由一個原生的等同組件生成和控制,這個原生組件是由當前的圖形視窗系統決定的。
與此相對,Swing 組件經常被描述為輕量級的,因為它們不需要作業系統本身所帶視窗工具包的原生資源來生成。
Swing API 的大部分是AWT的補充擴展而不是直接的代替。Swing用來繪製輕量級組件的核心渲染功能是由Java2D提供的,這是AWT的一部分。然而,輕量級和重量級組件在同一個應用中使用會導致Z-order不兼容。
同 SWT 的關係
標準器件工具包 是一個最初由IBM開發的工具包,現在由Eclipse基金會維護。 SWT的實現同重量級的組件AWT有更多的共同之處。這樣的好處是運行開銷同所在平台的原生視窗工具包更為接近。
SWT的到來使得Java桌面的開發者們分離為SWT的支持者和Swing的支持者。 在6.0版Java中,Swing的新修補專注於同原生視窗平台的逼真度,這可能會直接解決這個問題。
參考
- Matthew Robinson:Swing, Manning, ISBN 1-930110-88-X
- David M. Geary:Graphic Java 2, Volume 2: Swing, Prentice Hall, ISBN 0-13-079667-0
- James Elliott,Robert Eckstein,Marc Loy,David Wood,Brian Cole:Java Swing, O'Reilly, ISBN 0-596-00408-7
- Kathy Walrath,Mary Campione,Alison Huml,Sharon Zakhour:The JFC Swing Tutorial: A Guide to Constructing GUIs, Addison-Wesley Professional, ISBN 0-201-91467-0
外部連結
- Swing教程
- The Swing Connection
- JavaDesktop
- Java觀感
- ClientJava.com
- Presentation "Swing專家編程:創建優雅的程序,第一部分" by Ben Galbraith
- Presentation "Swing專家編程:創建優雅的程序,第二部分" by Ben Galbraith
- Article "什麼叫」Swing很慢「?" by Sermet Yucel
- Article "Java桌面開發" by Andrei Cioroianu
- Article "BlackMamba:一個Swing的實例學習" by Ashwin Jayaprakash
- 有關AWT/Swing的文章
- Citations from CiteSeer
- Swing wiki 包含了最棒的練習、技巧、訣竅以及如何入門