【问题标题】:Java Swing | Key listener not responding at allJava 摇摆 |关键监听器根本没有响应
【发布时间】:2016-04-04 13:06:29
【问题描述】:

我正在尝试让我的 KeyEvent 正常工作。可悲的是,keyTyped(KeyEvent e) 根本没有回应。 :)

我为我的班级实施了 KeyEvnet。

我按如下方式分配了监听器:

JTextfield searchBar = new JTextField();
searchBar.addKeyListener( this );

我的关键事件如下所示:

@Override
public void keyTyped(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
        System.out.println("pressed");
        try {
            int browser = getSelectBrowser().getSelectedIndex();
            logic.search( searchBar.getText(), searchInfo, browser, isURL );
        } catch (InterruptedException ie) {
            System.out.println( "Pressed fail" );
        }
        this.repaint();
    }
}

我还在第二次测试 Gui 中尝试了 Listener,但它也不起作用。

:-)

【问题讨论】:

  • “不起作用”不是可接受的问题描述。 stackoverflow.com/help/how-to-ask
  • 您是否尝试在您的if 之外添加System.out.println(...)?
  • @Tiz System.out.println(...) 只是为了检查它是否真的通过了监听器;)它应该与 println() 一起工作。
  • @itknocks 是的,我知道。我的意思是您不会看到打印输出除非按下回车。将println 放在if 之外会告诉您是否为其他键调用该方法。
  • @Tiz 哦,对不起,我想念你的答案。当我把它放在“如果”之外时,我按下的所有内容都会打印出一个 0

标签: java swing keylistener


【解决方案1】:

使用“keyPressed”而不是“keyTyped”。 keyTyped 仅侦听字母数字字符

【讨论】:

  • 使用“keyPressed”而不是“keyTyped”。 keyTyped 仅侦听字母数字字符
【解决方案2】:

当你按下回车键时你不会看到这个监听器被调用,所以你的println 永远不会被调用。在JTextField 上按回车键将调用附加的ActionListener,如果有的话。

要使其正常工作,请在文本字段中添加ActionListener,然后将按下回车时要运行的代码放入其中。

您可以阅读更多关于它的信息here。感谢 tak3shi 在 cmets 中链接。

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 2012-03-30
    • 2012-04-29
    • 2010-12-25
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多