2016-06-03 3 views
1

Je souhaite détecter lorsque certaines touches sont enfoncées. Je n'arrive pas à trouver un KeyCode pour le signe pourcentage (%). J'ai balayé le JavaFX 8 JavaDoc, et il n'y a aucune constante d'Enum pour PERCENT comme je m'attendrais. Google n'était pas utile non plus. Y at-il quelque chose de spécial à propos de% que je ne connais pas? L'Enum KeyCode.PERCENT n'existe pas.JavaFX KeyCode pour pourcentage (%)

+0

Vous avez du code pour partager? J'ai fait face à des problèmes similaires il y a quelque temps. Cela aiderait si vous nous commenciez avec du code. – mohsenmadi

+0

@mohsenmadi pas sûr que ça aide vraiment, mais j'ai ajouté du code à ma question. Je veux juste un 'KeyCode' pour cent (Shift + 5) sur mon clavier. Je peux détecter Shift + 5 en utilisant un 'KeyCombination', mais je veux utiliser un' KeyCode' pour la dernière touche enfoncée. – RonSiven

+0

Je vois une bonne solution ci-dessous par @fabian, ou vous pouvez même utiliser getText() en entrée pour déterminer si la touche pressée est%. Certes, il semble qu'il n'existe pas de solution propre pour traiter toutes les clés en utilisant la même approche de codage. – mohsenmadi

Répondre

1

plutôt que d'utiliser l'événement keyPressed, utilisez l'événement keyTyped et utiliser KeyEvent.getCharacter pour obtenir le résultat indépendant de la disposition du clavier:

@FXML 
private void keyTyped(KeyEvent evt) { 
    ... 
    if ("%".equals(evt.getCharacter())) { 
     percentAction(); 
    } 
} 

(Vous devez bien sûr modifier votre fichier fxml.)

+0

Merci @fabian. Cela fonctionnera. J'ai été capable de contourner le problème de la même manière. – RonSiven

-1

Avez-vous essayé cela?

YOUR_CONTROLLER.setOnKeyPressed(event ->{ 
     if((event.getCode() == KeyCode.DIGIT5) && event.isShiftDown()) 
      System.out.println("It's work"); 

}); 

Et oui, u ne peut pas trouver CodeTouche pour ce symbole parce que pour écrire, vous devriez appuyer sur plus de 1 touche (:

MISE À JOUR: Vous pouvez également essayer ceci:

YOUR_CONTROLLER.setOnKeyPressed(event ->{ 
     if((event.getText().equals("%")) 
      System.out.println("It's work"); 
}); 
+0

Cette solution est plutôt mauvaise ... Elle dépend de la disposition du clavier et échouera, par ex. Pour la [mise en page AZERTY] (https://en.wikipedia.org/wiki/AZERTY) – fabian

+0

Donc, la clé est DIGIT et isShiftDown, maintenant quelle touche est-ce? – mohsenmadi

+1

Peut-on lire le code clairement? Il y a DIGIT5 – GVArt