繁体   English   中英

KeyEvent无法启动?

[英]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);

我似乎无法激发关键的听众。 没有系统故障。 有什么想法吗?

除了不添加KeyListenerJFrame默认情况下也不可聚焦,因此不会将KeyEvents发送到窗口KeyEvents本身需要焦点才能工作。 因此,在Swing中与KeyStrokes进行交互的首选方法是使用无需绑定组件即可工作的Key Bindings

不,您正在实现接口-但不要告诉任何重要的信息。

您可以在构造函数中编写以下代码:

addKeyListener(this);

我相信这会做正确的事。 事情已经添加的KeyListener,基本上。 仅实现接口不会自动使任何事情开始使用该实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM