首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java AWT 圖形界面基礎代碼逐行解析

     編輯:程式設計疑難解答

代碼片段

public class TestGraphics extends Frame {
    public static void main(String[] args) {
        TestGraphics gp = new TestGraphics();
        gp.setBounds(300, 300, 100, 100);
        gp.setVisible(true);
    }
}

逐行詳細解析

代碼行含義關鍵點
public class TestGraphics extends Frame定義類繼承 java.awt.FrameFrame 是頂級窗口容器,有標題欄、邊框、可最小化/最大化/關閉
public static void main(String[] args)程序入口,JVM 調用啟動必須 static,返回 void,參數 String[]
TestGraphics gp = new TestGraphics();實例化窗口對象調用無參構造器,繼承自 Frame 的初始化邏輯自動執行
gp.setBounds(300, 300, 100, 100);設置窗口位置和大小參數:x, y, width, height。坐標原點 (0,0) 為屏幕左上角
gp.setVisible(true);顯示窗口Frame 默認不可見,必須調用此方法顯示;false 為隱藏

補充:完整可運行的繪圖示例

import java.awt.*;

public class TestGraphics extends Frame {
    public TestGraphics() {
        setTitle("繪圖測試");
        setSize(400, 300);
        setLocationRelativeTo(null); // 居中
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                dispose(); // 釋放資源
                System.exit(0);
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        // 繪製圖形
        g.drawString("Hello AWT!", 50, 50);
        g.drawRect(50, 60, 100, 50);
        g.fillOval(200, 60, 50, 50);
        g.setColor(Color.RED);
        g.drawLine(50, 150, 350, 150);
    }

    public static void main(String[] args) {
        new TestGraphics().setVisible(true);
    }
}

關鍵概念擴展

  • paint(Graphics g):重繪回調,窗口首次顯示、恢復最小化、被遮擋後顯示時自動調用。不可主動調用,需調用 repaint() 請求重繪。
  • Graphics 對象:畫筆,提供 drawXxx、fillXxx、setColor/Font 等方法。
  • 坐標系:原點 (0,0) 在窗口客戶區左上角(標題欄下方),x 向右,y 向下。
  • 雙緩衝:防止閃爍,需覆寫 update(Graphics g) 使用離屏圖像。

現代替代方案

AWT 為 Java 1.0 早期 GUI,功能受限。現代開發建議:

  • Swing:JFrame、JPanel,組件豐富、可換膚、雙緩衝默認開啟。
  • JavaFX:現代聲明式 UI,支持 CSS 樣式、FXML 分離、硬件加速、Web 整合。

總結

示例代碼演示了 AWT 創建窗口的最小流程:繼承 Frame → 實例化 → 設置幾何屬性 → 顯示。理解 paint 回調機制與坐標系是繪圖編程基礎。實際項目請使用 Swing 或 JavaFX。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved