gpt4 book ai didi

java - 将 KeyListeners 添加到 JPanel 不起作用

转载 作者:行者123 更新时间:2023-11-30 07:13:59 25 4
gpt4 key购买 nike

我刚刚完成了有关制作联网游戏的在线教程。游戏本身只是一个在屏幕上跟随鼠标的小圆圈。

我一直在修改代码以使用键而不是鼠标来移动圆圈。然而,虽然我以前做过这件事,但我从未使用过“JPanel”,而且我努力获得移动圆圈的 key 。

游戏的“客户端”端仅包含两个文件,Client.java 和 DataPackage.java,问题(据我所知)似乎出在 Client.java 中。

我不会粘贴整个代码,因为它很大(如果您认为有必要,我会粘贴),但这是让球跟随鼠标的部分

public Client()
{
this.addMouseMotionListener(new MouseMotionListener()
{

@Override
public void mouseDragged(MouseEvent e)
{
x = e.getX();
y = e.getY();
}

@Override
public void mouseMoved(MouseEvent e) {}

});
}

现在我已经尝试过改变

this.addMouseMotionListener(new MouseMotionListener()
{

@Override
public void mouseDragged(MouseEvent e)
{
x = e.getX();
y = e.getY();
}

@Override
public void mouseMoved(MouseEvent e) {}

});

this.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) { System.out.println( "tester"); }

public void keyReleased(KeyEvent e) { System.out.println("2test2"); }

public void keyTyped(KeyEvent e) { System.out.println("3test3"); }
});

但这似乎没有用,然后我尝试通过将键控代码放在

之外来更改键控代码的位置
public Client() { }

然后我认为它可能是文件顶部的“implements”标签。所以我加了

implements KeyListener

结束

public class Client extends JComponent

但是还是不行然后我做了更多的研究,似乎我需要通过使用将面板设置为焦点

panel.setFocusable(true);

但是这个信息的来源,没说放在哪里,放在哪里都会报错

有人可以帮我解释一下吗?

最佳答案

看看 Swing 大师 @camickr 的文章 Motion using the keyboard .使用 KeyListeners 有两个大问题,组件必须是可聚焦的并且必须处于焦点中。KeyBindings 是在 swing 中执行的正确方法,将键绑定(bind)到特定操作。 How to Use KeyBindings

关于java - 将 KeyListeners 添加到 JPanel 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815998/

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