我有一個名爲NavigationLink一個自定義Swing組件延伸的JLabel並實現了關鍵事件監聽器,像這樣Enter事件:防止冒泡到主窗口
addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
boolean actionInvoked = e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_SPACE;
if (actionInvoked && NavigationLink.this.clickAction != null) {
NavigationLink.this.clickAction.run();
}
}
});
clickAction是一個Runnable打開一個JOptionPane.showMessageDialog其包含一個按鈕,「確定」。所有這一切工作正常,問題如下:
- 用戶使用Tab直到使用導航到NavigationLink進入焦點
- 使用按ENTER鍵,打開對話框消息,在「確定」按鈕默認爲默認焦點
- 用戶按ENTER鍵關閉對話框,但也會導致我們的NavigationLink中的keyReleased事件觸發,立即再次打開對話框!
如何在取消ENTER事件後處理對話框中的「確定」按鈕?
謝謝!我不知道爲什麼KeyListeners有這個問題,Key Bindings沒有,但使用Key Bindings做了這個訣竅... – 2010-10-22 01:23:24