當掌握 Java 基本語法與面向對象基礎後,即可開始設計簡單的 Swing 程式。熟悉 VB 的開發者或許被其拖拉控制項設計介面的簡便性吸引,但強大的 Java 同樣能設計出精美的使用者介面。
Java 1.0 初期尚無 Swing,當時的 GUI 基礎庫稱為 AWT(Abstract Window Toolkit)。AWT 將元件建立行為交給底層作業系統的 GUI 工具箱處理,以實現「撰寫一次,到處執行」(WORA)。但因各作業系統差異,AWT 存在諸多 Bug。1996 年 Sun 與 Netscape 合作創建了新庫,命名為 Swing。
假如沒有 Swing,Java 的圖形介面將不值一提。
Swing 是 Java 基礎類別,屬於 JFC(Java Foundation Classes)一部分。完整的 JFC 龐大且組件豐富。
許多初學者在學完基礎後對 Java 能做什麼感到茫然,研究 Swing 有助於提升理解。以下是一個入門 Swing 的經典範例:
// 簡單展示 Swing 基礎的範例
import javax.swing.*;
import java.awt.*;
public class HelloCsdn {
public static void main(String[] args) {
HelloCsdnFrame frame = new HelloCsdnFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); // 建議使用 setVisible(true) 替代過時的 show()
}
}
class HelloCsdnFrame extends JFrame {
public HelloCsdnFrame() {
setTitle("Hello CSDN.NET");
setSize(WIDTH, HEIGHT);
HelloCsdnPanel panel = new HelloCsdnPanel();
Container c = getContentPane();
c.add(panel);
}
public static final int WIDTH = 300;
public static final int HEIGHT = 200;
}
class HelloCsdnPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Hello CSDN.NET", MESSAGE_X, MESSAGE_Y);
}
public static final int MESSAGE_X = 100;
public static final int MESSAGE_Y = 100;
}
此範例展示了建立視窗、面板與繪製文字的基本流程,是 Swing 入門的絕佳起點。