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

Java Applet 滑鼠事件處理入門:追蹤座標與點擊計數

     編輯:Java 相關知識

雖然 Applet 已被淘汰,但其事件處理模型仍是理解 Java GUI 程式設計的經典教材。本文解析一個簡易滑鼠追蹤程式,展示 mouseDown、paint、update 協作流程。

完整程式碼

import java.awt.Graphics;
import java.awt.Event;
import java.awt.Color;

public class MouseTracker extends java.applet.Applet {
    int clickCount = 0;
    int lastX, lastY;

    public boolean mouseDown(Event evt, int x, int y) {
        lastX = x;
        lastY = y;
        clickCount++;
        repaint(); // 觸發 update() -> paint()
        return true; // 表示事件已消費
    }

    public void update(Graphics g) {
        // 雙緩衝雛形:先清背景再呼叫 paint()
        g.setColor(getBackground());
        g.fillRect(10, 300, 200, 60);
        paint(g);
    }

    public void paint(Graphics g) {
        g.setColor(Color.green);
        g.drawString("目前滑鼠座標 (" + lastX + "," + lastY + ")", 10, 300);
        g.drawString("This is No." + clickCount + " point", 10, 340);
        g.setColor(Color.red);
        // 畫紅色叉號標示點擊位置
        g.drawLine(lastX - 5, lastY - 5, lastX + 5, lastY + 5);
        g.drawLine(lastX + 5, lastY - 5, lastX - 5, lastY + 5);
    }
}

HTML 嵌入範例

<html>
<body>
<applet code="MouseTracker.class" width=300 height=350></applet>
</body>
</html>

關鍵流程解析

  1. 事件進入點:使用者按下滑鼠 → AWT 呼叫 mouseDown(Event, x, y)。
  2. 狀態更新:記錄座標、遞增計數器。
  3. 請求重繪:repaint() 排程 update(),預設 update() 清背景後呼叫 paint()。
  4. 繪製邏輯:paint() 讀取最新狀態繪製文字與圖形。

現代化對應

Applet 1.0Swing / JavaFX 現代寫法
mouseDown(Event, x, y)addMouseListener(e -> { ... }) (Lambda)
repaint() + update/paintSwing 自動雙緩衝;JavaFX 場景圖自動重繪
Graphics 立即模式Swing 仍用 Graphics2D;JavaFX 用保留模式節點

雖然 Applet 已退役,但「事件 → 狀態 → 重繪」的 MVC 雛形思維至今仍通用於所有 GUI 框架。

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