[英]KeyEvent not firing?
我的世界如下:
public class World extends JFrame implements KeyListener {
public boolean left = false, right = false, back = false, fwd = false;
public World() {
this.setSize(600, 600);
this.setVisible(true);
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getExtendedKeyCode() == KeyEvent.VK_LEFT) left = true;
if(e.getExtendedKeyCode() == KeyEvent.VK_RIGHT) right = true;
if(e.getExtendedKeyCode() == KeyEvent.VK_UP) fwd= true;
if(e.getExtendedKeyCode() == KeyEvent.VK_DOWN) back = true;
System.out.println("L:"+left+" R:"+right+" F:"+fwd+" B:"+back);
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getExtendedKeyCode() == KeyEvent.VK_LEFT) left = false;
if(e.getExtendedKeyCode() == KeyEvent.VK_RIGHT) right = false;
if(e.getExtendedKeyCode() == KeyEvent.VK_UP) fwd= false;
if(e.getExtendedKeyCode() == KeyEvent.VK_DOWN) back = false;
System.out.println("L:"+left+" R:"+right+" F:"+fwd+" B:"+back);
}
@Override
public void keyTyped(KeyEvent e) {}
}
从理论上讲,这应该在按键或释放时触发,但事实并非如此。 框架中的组件正在正确绘制。
框架实例化如下:
World m = new World();
m.getContentPane().setBackground(Color.BLACK);
我似乎无法激发关键的听众。 没有系统故障。 有什么想法吗?
除了不添加KeyListener
, JFrame
默认情况下也不可聚焦,因此不会将KeyEvents
发送到窗口KeyEvents
本身需要焦点才能工作。 因此,在Swing中与KeyStrokes
进行交互的首选方法是使用无需绑定组件即可工作的Key Bindings 。
不,您正在实现接口-但不要告诉任何重要的信息。
您可以在构造函数中编写以下代码:
addKeyListener(this);
我相信这会做正确的事。 事情已经添加的KeyListener,基本上。 仅实现接口不会自动使任何事情开始使用该实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.