62,628
社区成员
发帖
与我相关
我的任务
分享package test;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test2 extends JFrame {
public static void main(String[] args) {
test2 test2 = new test2();
}
// 构造方法
public test2() {
MyPanel mp = new MyPanel();
// 加入到JFrame 实现监听
this.add(mp);
this.addKeyListener(mp);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
this.setLocation(300, 200);
}
}
// 定义一个自己的面板
class MyPanel extends JPanel implements KeyListener {
int x = 10;
int y = 10;
public void paint(Graphics graphics) {
super.paint(graphics);
graphics.fillOval(x, y, 10, 10);
}
// 键被按下
public void keyTyped(KeyEvent e) {
System.out.println("被按下" + e.getKeyChar());
}
// 键被释放
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y++;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
y--;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x--;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x++;
}
repaint();
}
// 键的一个值被输出
public void keyReleased(KeyEvent e) {
}
}
keyTyped 在文档上写的是 Unicode 字符时产生的事件,我的理解应该是可打印字符才能产生这个事件。方向键属于不可打印字符,所以根本不产生 keyTyped 事件。