gpt4 book ai didi

java - KeyListener 在 JPanel 中不起作用?

转载 作者:行者123 更新时间:2023-11-30 08:28:43 25 4
gpt4 key购买 nike

我正在尝试在 Java 类中使用 KeyListener,但由于某些奇怪的原因它不接受输入。我最近遇到了这个问题,在它运行完美之前,但发生了一些变化,现在它不接受任何输入。这是我的代码的摘录:

public class SquarePanel extends JPanel implements Runnable, KeyListener, MouseListener
...
public SquarePanel {
this.setFocusable(true);
this.requestFocusInWindow();
addKeyListener(this);

然后我继续覆盖 keyPressed:

@Override
public void keyPressed(KeyEvent e)
{
System.out.println("SOMETHING");
}

然而什么也没有发生。我做错了什么吗?

(旁注:我认为我的程序没有获得焦点,这就是问题所在,因为当我使用 isFocusOwner() 时,它出现错误。如果是这种情况,我该如何解决这个问题?)

最佳答案

I think my program isn't receiving focus and that's the problem,

这是 KeyListener 不起作用时的常见问题。

 this.requestFocusInWindow();

以上语句仅在 GUI 当前可见时才有效。由于您正在面板构造函数中执行该语句,因此它将无效。组件必须显示在可见的 GUI 上,以便组件请求焦点。

您必须在 GUI 可见后请求焦点。

或者,另一种选择是使用 RequestFocusListener .

为什么要使用 KeyListener? Swing 旨在与 KY Bindings 一起使用.

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

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