2010-05-19 80 views
1

我有一个搜索对话框,它带有一个用作搜索框的JTextField。Java/Swing:关键听众的问题

当用户键入内容时,它会搜索数据库,在JTable中显示结果并选择其中的第一项。

如果第一个结果是他们正在查找的内容,我想让他们快速接受对话框,方法是按Enter键(而JTextField专注)。

所以我添加了一个KeyListener到JTextField,它的工作正常。

现在问题: 用户打开时,可以在对话框的父框架上的“搜索”按钮处于焦点位置时按Enter键来打开该对话框。

显示对话框并且JTextField获取keyReleased事件(从显示它的Enter键),因此它显示并关闭。如果用户按下Enter键,则JTextField会收到keyPressed,keyTyped和keyReleased事件。

如何修复而不诉诸丑陋的解决方法?

平台是Windows 7 x64,顺便说一句。

谢谢。

回答

2

因此,我添加了一个KeyListener到 JTextField,它的工作正常。

您不应该为此使用KeyListener。你应该添加一个ActionListener到文本框。

一般而言,您不应该使用您应该使用的KeyListeners Key Bindings

+0

谢谢,这工作。我是Java新手,我不知道关键绑定。我忘了提及我曾尝试从NetBeans的操作对话框中设置加速器,但它没有工作,所以我尝试了关键的侦听器。再次感谢! – Mike 2010-05-19 05:16:24