簡體   English   中英

捕獲ENTER KeyEvent並單擊

[英]Capture ENTER KeyEvent and Do a Click instead

我已經將ENTER鍵添加到默認的FocusTraversalKeys中,例如...

private void focus() {
    Set forwardKeys = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
    Set newForwardKeys = new java.util.HashSet(forwardKeys);
    newForwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
    setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}

我有一個使用焦點的產品信息表單,但是當涉及到保存按鈕時,我想單擊該按鈕,而不是焦點轉到下一個組件。

我已將KeyPressed和KeyReleased偵聽器添加到按鈕,然后嘗試了此操作...

private void saveButtonKeyPressed(java.awt.event.KeyEvent evt) {                                      
    if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
        evt.consume();
        saveButton.doClick();
    }
}  

同樣的方法適用於我的“文本區域”,但是代碼不執行“單擊”操作,而是將重點放在下一個也是按鈕的組件上。

請提出一些有助於我達到所需結果的建議。 在下面找到所用表格的圖像。

http://tinypic.com/r/33acqy9/5

不要使用KeyListener。 Swing被設計為與鍵綁定一起使用。

簽出Enter Key and Button以獲得一些解決方案,一種使用鍵綁定,另一種使用不同的方法。

當按鈕獲得焦點時,從定義的SET i中刪除了ENTER鍵,因此現在可以使用KeyReleased方法。

private void saveButtonFocusGained(java.awt.event.FocusEvent evt) {                                       
    newForwardKeys.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));  
    setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}  

謝謝你們每一個人的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM