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.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());
if(e.getKeyChar()==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 函数,重绘界面
repaint();
} //键被释放
public void keyPressed(KeyEvent e) {
} //键的一个值被输出
public void keyReleased(KeyEvent e) {
}
}
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.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());
if(e.getKeyChar()==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 函数,重绘界面
repaint();
} //键被释放
public void keyPressed(KeyEvent e) {
} //键的一个值被输出
public void keyReleased(KeyEvent e) {
}
}
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 事件。