【发布时间】:2020-03-27 03:29:27
【问题描述】:
KeyListener 根本不起作用就像它不存在一样,它显示带有桨的框架,但是当按下箭头键时它不会移动,但是 我的代码在我的朋友的电脑,我删除并安装了最新版本的JDK和eclipse,没有任何变化,我什至用cmd编译它也不起作用
编辑: 100 次尝试中的一次它可以正常工作,然后下次它返回不工作
代码是关于用箭头键移动的桨
桨类:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class Paddle extends JPanel implements KeyListener{
private int x=900,y=280 ;
private int sx=20,sy=20 ;
private int valY=0;
public Paddle() {
setFocusable(true);
requestFocus();
addKeyListener(this);
}
public void paintComponent(Graphics g) {
draw(g);
update();
repaint();
}
public void draw(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, 1000, 1000);
g.setColor(Color.ORANGE);
g.fillRect(x, y, sx, sy);
}
public void update() {
this.y+=this.valY;
}
public void keyTyped(KeyEvent e) {
System.out.println("typed");
}
public void keyPressed(KeyEvent e) {
System.out.println("typed");
int c=e.getKeyCode();
if (c==KeyEvent.VK_UP){
this.valY=-1;
}
if(c==KeyEvent.VK_DOWN){
this.valY=1;
}
}
public void keyReleased(KeyEvent e) {
valY=0;
}
}
【问题讨论】:
-
KeyListener 要求组件被聚焦。如果您使用侦听器单击或关闭组件,您将一无所获,这可能是您发生的事情。使用key bindings 来避免此类问题。
-
我认为在构造函数中请求焦点可能会失败。
标签: java eclipse swing keylistener