2010-05-19 82 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