我知道如何实现一个关键的监听器;那不是问题。
public void keyTyped(KeyEvent event) {
if (event.getKeyChar() == KEY_LEFT) {
cTDirection = LEFT;
}
if (event.getKeyChar() == 40) {
cTDirection = DOWN;
}
if (event.getKeyChar() == 39) {
cTDirection = RIGHT;
}
if (event.getKeyChar() == 38) {
cTDirection = UP;
}
}
我将LEFT_KEY
/ 40/39/38放在哪里?当我创建一个keylistener并输入键时,我相信我得到了37 - 40.我不知道该把它放在那里只听箭头键。
答案 0 :(得分:15)
我建议使用:
if (event.getKeyCode() == KeyEvent.VK_UP) {
...
}
重复VK_DOWN, VK_LEFT, VK_RIGHT
。
数字小键盘有单独的代码:VK_KP_UP, VK_KP_DOWN, VK_KP_LEFT, VK_KP_RIGHT
如果您需要它们。
有关所有代码,请参阅KeyEvent。
答案 1 :(得分:3)
KeyEvent.VK_LEFT
,KeyEvent.VK_RIGHT
等
此外,您应该使用getKeyCode
,而不是getKeyChar
。 getKeyChar
用于实际对应于字符(字母,数字,空格等)的键。
答案 2 :(得分:2)
使用
if ( e.getKeyCode() == KeyEvent.VK_LEFT){
//Do something
}
其他关键是:
KeyEvent.VK_UP
KeyEvent.VK_RIGHT
KeyEvent.VK_DOWN
答案 3 :(得分:1)
以下是我的工作:
public void keyPressed (KeyEvent e) {
int c = e.getKeyCode ();
if (c==KeyEvent.VK_UP) {
b.y--;
} else if(c==KeyEvent.VK_DOWN) {
b.y++;
} else if(c==KeyEvent.VK_LEFT) {
b.x--;
} else if(c==KeyEvent.VK_RIGHT) {
b.x++;
}
System.out.println (b.x);
b.repaint ();
}
对我来说,如果我把它放在KeyPressed中就行不通了,但是如果把它放在KeyTyped中就可以正常工作。
答案 4 :(得分:0)
使用getKeyCode()
方法并再次比较返回的值KeyEvent.VK_LEFT
,KeyEvent.VK_RIGHT
,KeyEvent.VK_UP
和KeyEvent.VK_DOWN
常量。
答案 5 :(得分:0)
首先声明init方法
public void init(){
this.addKeyListener(new keyb());}
然后使用实现KeyListner的内部类
class keyb implements KeyListener{
public void keyPressed (KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_UP){
y-=50;
}else if(e.getKeyCode()==KeyEvent.VK_DOWN){
y+=50;
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
x+=50;
}else if(e.getKeyCode()==KeyEvent.VK_LEFT){
x-=50;
}
repaint();
}
public void keyReleased (KeyEvent e){}
public void keyTyped (KeyEvent e){}
}
你也可以使用适配器而不是写Keyreleased& keyTyped ....如你所知
答案 6 :(得分:-2)
btw in KeyAdapter - > keyTyped getCharCode()不起作用 您应该尝试使用keyPressed或keyReleased