首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java SE 圖形界面(GUI)入門:AWT 與 Swing 核心組件實戰

     編輯:Java 綜合教學

從零構建第一個 Java 桌面視窗:Frame、布局、按鈕全解析

Java 提供了兩套 GUI 工具包:AWT(Abstract Window Toolkit) 依賴本地系統原生組件,重量級、跨平台一致性差;Swing 純 Java 實現,輕量級、可插拔外觀,是現代 Java 桌面開發主流。本文以最基礎的 Frame 為例,演示視窗創建、尺寸定位、布局管理、組件添加與顯示的完整流程。

一、 核心類與繼承體系

  • java.awt.Frame:頂級視窗容器,擁有標題欄、邊框、最小化/最大化/關閉按鈕。
  • java.awt.Button:基礎按鈕組件(AWT 版)。
  • java.awt.FlowLayout:流式布局管理器,組件按添加順序左到右、上到下排列。

二、 視窗創建四步驟

  1. 實例化 Frame:Frame frame = new Frame("我是視窗標題");
  2. 設置尺寸與位置:
    • frame.setSize(400, 300); // 寬 400px,高 300px
    • frame.setLocation(500, 200); // 屏幕座標 (500, 200)
  3. 設置布局管理器:frame.setLayout(new FlowLayout());
  4. 添加組件並顯示:
    Button button = new Button("按鈕");
    frame.add(button);
    frame.setVisible(true); // 關鍵:使視窗可見,啟動事件分發線程

三、 完整可運行示例代碼

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class GuiDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("我是視窗");
        frame.setSize(400, 300);
        frame.setLocation(500, 200);
        frame.setLayout(new FlowLayout());
        Button button = new Button("按鈕");
        frame.add(button);
        frame.setVisible(true);
    }
}

四、 運行效果與線程模型說明

Java AWT 視窗運行截圖

執行後會彈出一個標題為「我是視窗」的桌面視窗,內含一個「按鈕」。值得注意的是:調用 setVisible(true) 後,主線程(main)雖然結束,但程序不會退出,因為 AWT/Swing 內部啟動了事件分發線程(Event Dispatch Thread, EDT) 專門處理繪製、事件循環,這是一個非守護線程,會一直存活直到所有視窗關閉或調用 System.exit()。

五、 進階學習路線圖

  • 布局管理器:BorderLayout(邊界)、GridLayout(網格)、CardLayout(卡片)、GridBagLayout(網格包)、GroupLayout(組佈局)。
  • Swing 組件:JFrame、JPanel、JButton、JLabel、JTextField、JTable、JTree 等,支持圖標、工具提示、HTML 文本。
  • 事件處理:監聽器模式(ActionListener, MouseListener, WindowListener 等),Lambda 表達式簡化代碼。
  • 繪圖與自定義組件:重寫 paintComponent(Graphics g),雙緩衝防閃爍。
  • 現代替代方案:JavaFX(FXML + CSS + Scene Builder)、TornadoFX (Kotlin)、Compose for Desktop (Jetpack Compose 移植版)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved