跳至內容

Swing (Java)

維基百科,自由的百科全書

這是本頁的一個歷史版本,由Xqbot對話 | 貢獻2011年1月5日 (三) 12:09 (r2.5.2) (機器人 修改: pt: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的新修補專注於同原生視窗平台的逼真度,這可能會直接解決這個問題。

參考

外部連結