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

Java AWT GUI 程式設計完整入門指南

     編輯:Java 相關知識

1. 事件監聽機制

AWT 采用委派事件模型:事件源、事件對象、監聽器接口。

ActionListener 示例:按鈕點擊

Button btn1 = new Button("start");
Button btn2 = new Button("stop");
Monitor2 m2 = new Monitor2();
btn1.addActionListener(m2);
btn2.addActionListener(m2);
btn2.setActionCommand("GameOver"); // 自定義命令字符串

class Monitor2 implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        System.out.println(e.getActionCommand()); // 區分按鈕
    }
}

TextField 事件與簡易計算器

TextField num1 = new TextField(10), num2 = new TextField(10), num3 = new TextField(15);
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyMonitor(num1, num2, num3));

class MyMonitor implements ActionListener {
    TextField n1, n2, n3;
    public MyMonitor(TextField n1, TextField n2, TextField n3) { this.n1=n1; this.n2=n2; this.n3=n3; }
    public void actionPerformed(ActionEvent e) {
        int a = Integer.parseInt(n1.getText());
        int b = Integer.parseInt(n2.getText());
        n3.setText(String.valueOf(a+b));
        n1.setText(""); n2.setText("");
    }
}

2. 內部類優化訪問外部成員

內部類可直接訪問外部類私有成員,無需傳遞引用。

class MyMathFrame extends Frame {
    TextField num1, num2, num3;
    // ...
    btnEqual.addActionListener(new MyMonitor()); // 內部類
    private class MyMonitor implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int a = Integer.parseInt(num1.getText()); // 直接訪問
            // ...
        }
    }
}

3. Graphics 繪圖基礎

public void paint(Graphics g) {
    g.setColor(Color.red);
    g.fillOval(100,100,100,100); // 實心圓
    g.setColor(Color.green);
    g.fillRect(150,200,200,200); // 實心矩形
    // 恢復畫筆顏色
    g.setColor(g.getColor());
}

paint() 由系統自動調用(窗口顯示、恢復最小化等)。

4. 滑鼠事件與 MouseAdapter

this.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
        points.add(new Point(e.getX(), e.getY()));
        repaint(); // 觸發 paint()
    }
});

5. 窗口關閉事件

addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        setVisible(false);
        System.exit(0);
    }
});

6. 鍵盤事件與 KeyAdapter

addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_UP)
            System.out.println("按下上鍵");
    }
});

總結

AWT 雖屬較早期 GUI 技術,但其事件模型、繪圖機制、內部類應用等核心思想對理解 Swing、JavaFX 乃至現代 UI 框架仍具參考價值。

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