gpt4 book ai didi

java - 为什么我的 KeyListener 没有被调用?

转载 作者:行者123 更新时间:2023-12-01 22:34:45 29 4
gpt4 key购买 nike

我正在开展一个学校项目,该项目有两个图像......一个好人和一个坏人。我正在使用计时器将坏人发送给好人,这正在工作中找到,但我应该使用 KeyListener 将好人移向或远离坏人......然后最终攻击但这是以后的事了。

我只是想让我的“好人”继续使用 KeyListener,但它没有被调用。我不知道为什么。

这是我的构造函数,它在主面板中调用我的 EventLIstener:

//monster 1 coordinates
int mon1x = 0;
int mon1y = 300;

KeyListenerAction myKeyActionListener = new KeyListenerAction();

public BlobFighterPanel()
{
addKeyListener(myKeyActionListener);

this.setPreferredSize(new Dimension(1300,600)); //set size of main panel

//add button
startButton.addActionListener(startListener);
add(startButton);
}

然后下面我有我的 KeyListener,但它没有被调用:

public class KeyListenerAction implements KeyListener  {

public void keyPressed (KeyEvent event)
{
switch(event.getKeyCode())
{
case KeyEvent.VK_LEFT:
goodx -= 10;
break;
case KeyEvent.VK_RIGHT:
System.out.println("Right");
goodx += 10;
break;
}

repaint();
}
public void keyTyped(KeyEvent event){}
public void keyReleased(KeyEvent event){}

}

我做错了什么?为什么我的 KeyListener 没有被调用?

最佳答案

KeyListener 是善变的情妇。它始终是所有注意力的焦点,否则它不会与你交谈。这是什么意思?为了让 KeyListener 引发事件,组件注册为必须具有焦点并且可聚焦...

这意味着当另一个组件获得焦点(如按钮)时,KeyListener 将不再响应。

相反,您应该使用按键绑定(bind) API,该 API 旨在解决此问题。请参阅How to Use Key Bindings了解更多详情

关于java - 为什么我的 KeyListener 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27032607/

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