2013-09-25 30 views
6

我想問你我可以得到多個密鑰的密鑰組合。例如,我從這個例子可以拿到鑰匙代碼:獲取組合密碼

 public void handle(KeyEvent event) { 
      if (event.getCode() == KeyCode.TAB) { 
     } 

但我怎麼能得到這個例子中的關鍵代碼:

textField.setText(""); 
       // Process only desired key types 
       if (event.getCode().isLetterKey() 
         || event.getCode().isDigitKey() 
         || event.getCode().isFunctionKey()) { 
        String shortcut = event.getCode().getName(); 
        if (event.isAltDown()) { 
         shortcut = "Alt + " + shortcut; 
        } 
        if (event.isControlDown()) { 
         shortcut = "Ctrl + " + shortcut; 
        } 
        if (event.isShiftDown()) { 
         shortcut = "Shift + " + shortcut; 
        } 
        textField.setText(shortcut); 
        shortcutKeyEvent = event; 
       } else { 
        shortcutKeyEvent = null; 
       } 

是否有可能得到這些鍵的鍵碼組合Ctrl + TabCtrl + A

回答

11

沒有,處理keyEvent只有一個主KeyCode,例如該代碼

public void handle(KeyEvent event) { 
    if (event.getCode() == KeyCode.TAB) { 
    } 
} 

將處理TABALT + TABCTRL + TAB等,如果你只關心CTRL + TAB,你有2種選擇:
1)使用isControlDown()

public void handle(KeyEvent event) { 
    if (event.getCode() == KeyCode.TAB && event.isControlDown()) { 
    } 
} 

2)using KeyCodeCombination

final KeyCombination kb = new KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN); 
... 
... 
public void handle(KeyEvent event) { 
    if (kb.match(event)) { 
    } 
} 
+0

還要考慮'KeyCombination.SHORTCUT_DOWN'。 「通過使用快捷鍵修改器,開發人員可以創建獨立於平臺的快捷方式。」 – trashgod

+1

問題是因爲它只有在沒有Control_Down的情況下按下Tab鍵時才起作用。如何使Handler只在兩個按鍵被按下時才能使用? –