2013-09-25 3 views
6

Je souhaite vous demander si je peux obtenir une combinaison de touches de plusieurs touches. Par exemple, je peux obtenir le code clé de cet exemple:Obtenir le code de combinaison de touches

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

Mais comment je peux obtenir le code clé de cet exemple:

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; 
       } 

Est-il possible d'obtenir la combinaison de code de ces clés Ctrl + Tab ou Ctrl + A?

Répondre

11

Non, le traité keyEvent n'a qu'un seul principal KeyCode, par exemple le code

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

traitera TAB, ALT + TAB ou CTRL + TAB etc. Si vous ne souhaitez que CTRL + TAB, vous avez 2 choix:
1) à l'aide isControlDown()

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

2) en utilisant KeyCodeCombination

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

Considérons également 'KeyCombination.SHORTCUT_DOWN'. "En utilisant le modificateur de raccourci, les développeurs peuvent créer des raccourcis indépendants de la plate-forme." – trashgod

+1

Le problème est dû au fait que cela fonctionne également lorsque vous n'appuyez que sur Tab sans Control_Down. Comment faire Handler qui ne fonctionnera que si les deux touches sont pressées? –

Questions connexes