Je suis actuellement en train de construire une calculatrice en Java et j'ai commencé à implémenter un écouteur clé. Cela fonctionne très bien, mais quand j'essaie de taper le symbole du caret (^) il ne s'enregistre pas immédiatement. Vous devez d'abord appuyer sur une autre touche pour le faire apparaître.Caret (^) ne s'enregistre pas immédiatement. Écouteur de clés Java
Je suppose que la raison en est qu'il utilise le même comportement que lorsque vous essayez de taper un signe dans un document texte ordinaire. Mais y a-t-il un moyen de contourner ce comportement?
Si elle aide, voici mon code pour gérer les KeyEvents:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (key.matches("[0-9*/+-=.()^%]")) {
controller.getButton(key).fire();
}
}
EDIT: Trouvé une solution de contournement. Le problème mentionné par Eli Sadoff est que mon curseur est une touche morte sur mon clavier. Depuis ma liaison pour le caret est « shift + ¨ », j'ai pu le résoudre comme ceci:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (ke.isShiftDown() && ke.getCode() == KeyCode.DEAD_DIAERESIS) {
controller.getButton("^").fire();
}
else if (key.matches("[0-9*/+-=.()%]")) {
controller.getButton(key).fire();
}
}
Avez-vous ce même problème avec '+', '(', ')', et '%' par hasard? –
Non, ni l'un ni l'autre. – Javatar4ever
Votre clé d'insertion est-elle une clé morte sur votre ordinateur? (Le fait de taper '^' et de 'e' produirait 'ê') –