事件处理机制
258字小于1分钟
2025-10-03
事件类
通过不同的接口实现不同的事件类
KeyListener
接口中的KeyEvent
事件类
class MyPanel extends JPanel implements KeyListener {
int x = 50;
int y = 50;
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 20, 20);
}
// 有字符输出时,该方法会被触发
@Override
public void keyTyped(KeyEvent e) {
System.out.println("hi");
}
// 当某个键被按下,该方法会被触发
@Override
public void keyPressed(KeyEvent e) {
// e.getKeyCode()表示被按下的键值
System.out.println((char)e.getKeyCode() + " 被按下");
// 在Java中每个键都对应着一个值,VK_对应键
// KeyEvent.VK_DOWN 表示向下方向键
// 当按下S键则y+5,向下移动,其它键同理
if (e.getKeyCode() == KeyEvent.VK_S) {
y += 5;
} else if (e.getKeyCode() == KeyEvent.VK_W) {
y -= 5;
} else if (e.getKeyCode() == KeyEvent.VK_A) {
x -= 5;
} else if (e.getKeyCode() == KeyEvent.VK_D) {
x += 5;
}
// 重绘画面,每更新一次坐标,需要重绘一次画面才能达到移动的效果
this.repaint();
}
// 当某个键松开,该方法会被触发
@Override
public void keyReleased(KeyEvent e) {
System.out.println("hello");
}
}