轉自 鍵者天行
當我們掌握 Java 基本語法與面向對象基礎後,即可著手設計簡單的 Swing 程式。熟悉 VB 的開發者或許被其拖拉控件、撰寫事件即可快速完成介面設計的簡便性吸引。但強大的 Java 同樣能設計出精美介面,絲毫不遜色於 VB。
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 龐大且組件豐富。
Swing 提供更豐富、更便捷的使用者介面元素集合,對底層平台依賴較低,因此跨平台 Bug 較少,能帶來統一的視覺體驗。
許多 Java 初學者在完成基礎學習後感到迷茫,不清楚 Java 能做什麼。建議在掌握基本概念後進一步鑽研 Swing,有助於提升技能。
以下是一個適合入門的經典範例程式:
// a simple exmple that can show the basis of swing
// import pakages which we need
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.show();
}
}
/** this part we constrUCt a new frame HelloCsdnFrame */
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;
}
/** this part we extend our HelloCsdnFram to JFrame and construct a new object HelloCsdnPanel and add it on the frame */
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;
}
/** A panel that display a message */
我將此程式分為三部分,各附註釋說明功能。一起分析:
// import pakages which we need
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.show();