gpt4 book ai didi

java - KeyEvent 没有触发?

转载 作者:行者123 更新时间:2023-11-29 09:55:03 27 4
gpt4 key购买 nike

我有一个类 World 如下:

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无需组件焦点即可工作。

关于java - KeyEvent 没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15591607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com