早期 Applet 直接覆寫 Event 處理方法,現代建議使用 java.awt.event 監聽器介面,但本文示範傳統方式以利理解基礎概念。
public class Mouse extends Applet {
String text = "";
public void paint(Graphics g) { g.drawString(text, 20, 20); }
public boolean mouseDown(Event evt, int x, int y) {
text = "Mouse Down"; repaint(); return true;
}
public boolean mouseUp(Event evt, int x, int y) {
text = ""; repaint(); return true;
}
// 其他:mouseDrag, mouseMove, mouseEnter, mouseExit
}
mouseDown:按下滑鼠鍵 (不區分左右鍵)。mouseUp:釋放滑鼠鍵。true 表示事件已處理,不再向上傳遞。public class Keyboard extends Applet {
String text = "";
public void paint(Graphics g) { g.drawString(text, 20, 20); }
public boolean keyDown(Event evt, int key) {
text = "Key Down: " + (char)key; repaint(); return true;
}
public boolean keyUp(Event evt, int key) {
text = ""; repaint(); return true;
}
}
keyDown:按下鍵盤,key 參數為 Unicode 值。keyUp:釋放鍵盤。MouseListener, MouseMotionListener, KeyListener 介面。init() 註冊:addMouseListener(this), addKeyListener(this)。MouseEvent, KeyEvent 提供豐富資訊 (點擊次數、修飾鍵、鍵盤碼等)。public class ModernEventApplet extends Applet implements MouseListener, KeyListener {
String msg = "";
public void init() {
addMouseListener(this); addKeyListener(this);
}
public void paint(Graphics g) { g.drawString(msg, 20, 20); }
public void mousePressed(MouseEvent e) { msg = "Mouse Pressed @ " + e.getX() + "," + e.getY(); repaint(); }
public void mouseReleased(MouseEvent e) { msg = ""; repaint(); }
// 其他 mouseClicked, mouseEntered, mouseExited 留空
public void keyPressed(KeyEvent e) { msg = "Key: " + KeyEvent.getKeyText(e.getKeyCode()); repaint(); }
public void keyReleased(KeyEvent e) { msg = ""; repaint(); }
public void keyTyped(KeyEvent e) {} // 可處理字元輸入
}