gpt4 book ai didi

java - KeyListener 不工作?

转载 作者:行者123 更新时间:2023-11-29 10:05:07 26 4
gpt4 key购买 nike

好的,所以我的游戏有这个关键监听器,但它不起作用,但是当我创建一个新项目只是为了测试它是否对我有用时?所以这是我的游戏的一些代码:

public class GameKeyListener implements KeyListener {

private void pressMainWeapon() {
Constants.MAIN_WEAPON_PRESSED = Constants.MAIN_WEAPON_PRESSED ? true : false;
}

private void pressSecondaryWeapon() {
Constants.SECONDARY_WEAPON_PRESSED = Constants.SECONDARY_WEAPON_PRESSED ? true : false;
}

private void pressSkillsButton() {
Constants.SKILLS_BUTTON_PRESSED = Constants.SKILLS_BUTTON_PRESSED ? true : false;
}

private void gameKeyPressed(int keyCode) {

switch (keyCode) {

case KeyEvent.VK_Q:
pressMainWeapon();
break;

case KeyEvent.VK_E:
pressSecondaryWeapon();
break;

case KeyEvent.VK_TAB:
pressSkillsButton();
break;

case KeyEvent.VK_W:
Constants.CHARACTER_Y -= 5;
break;

case KeyEvent.VK_A:
Constants.CHARACTER_X -= 5;
break;

case KeyEvent.VK_S:
Constants.CHARACTER_Y += 5;
break;

case KeyEvent.VK_D:
Constants.CHARACTER_X += 5;
break;

}
}

private void gameKeyReleased(int keyCode) {

}

private void gameKeyTyped(char keyChar) {

}

@Override
public void keyPressed(KeyEvent e) {
gameKeyPressed(e.getKeyCode());
System.out.println(e.getKeyChar());
}

@Override
public void keyReleased(KeyEvent e) {
gameKeyReleased(e.getKeyCode());
}

@Override
public void keyTyped(KeyEvent e) {
gameKeyTyped(e.getKeyChar());
}

public class GraphicsMain {

static JFrame f = new JFrame("Gurillia");

private static GameCanvas gc = new GameCanvas();

public static void startGraphics() throws IOException {
f.setVisible(true);
f.setIgnoreRepaint(true);

f.setContentPane(gc);
gc.setPreferredSize(new Dimension(Constants.GAME_WIDTH, Constants.GAME_HEIGHT));

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setResizable(false);

f.addKeyListener(new GameKeyListener());
}

但这确实有效:

public class testkeylistener implements KeyListener {

@Override
public void keyPressed(KeyEvent arg0) {
System.out.println(arg0.getKeyChar());
}

@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub

}

public static void main(String args[]) {
JFrame f = new JFrame("test");
f.setSize(1000,1000);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.pack();
f.addKeyListener(new testkeylistener());
}

那么问题是什么?

最佳答案

问题是您使用 KeyListener,而 Swing 被设计为使用 KeyBindings .差异可能是由于不同的焦点行为。

参见示例 this question KeyListener 只是偶尔工作

关于java - KeyListener 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211472/

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