本例演示在 Applet 中添加鍵盤監聽器,捕獲按鍵事件並將輸入字符實時繪製在 Applet 畫布上。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class KeyAd extends Applet {
String text = "";
int width, height;
public void init() {
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
this_keyPressed(e);
}
});
}
void this_keyPressed(KeyEvent e) {
String s = "";
text = s += e.getKeyChar(); // 獲取按鍵字符
System.out.println("text=" + text);
width = size().width;
height = size().height;
repaint(); // 觸發重繪
}
public void paint(Graphics g) {
setFont(new Font("Dialog", Font.BOLD, 80));
g.drawString(text, height/2, width/2); // 注意:x/y 參數似乎反了
}
}
addKeyListener(new KeyAdapter() {...}) 匿名內部類處理按鍵事件e.getKeyChar() 返回按鍵對應的 Unicode 字符repaint() 觸發 paint() 重繪g.drawString(text, height/2, width/2) 參數順序為 (x, y),但傳入的是 (height/2, width/2),可能導致顯示位置異常。正確應為 width/2, height/2 或根據實際佈局調整。
keydown、keypress、keyupctx.fillText() 實時渲染輸入字符