我正在尝试在 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()
结果是假的。如果是这种情况我该如何解决?)
我认为我的程序没有受到关注,这就是问题所在,
这是 KeyListener 不起作用时常见的问题。
this.requestFocusInWindow();
仅当 GUI 当前可见时,上述语句才有效。由于您正在面板构造函数中执行该语句,因此它不会产生任何效果。组件必须显示在可见的 GUI 上才能请求焦点。
您必须在 GUI 可见后请求焦点。
或者,另一种选择是使用请求焦点监听器 http://tips4java.wordpress.com/2010/03/14/dialog-focus/ .
为什么要使用 KeyListener? Swing 被设计用于KY 绑定 http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)