Я в настоящее время строю калькулятор на Java и начал внедрять прослушиватель клавиш. Он работает очень хорошо, но когда я пытаюсь ввести символ каретки (^), он не регистрируется сразу. Сначала вы должны нажать другую клавишу, чтобы она появилась.Caret (^) не регистрируется незамедлительно. Java key listener
Я полагаю, причина в том, что он использует то же поведение, что и при попытке ввести каретку в обычный текстовый документ. Но есть ли способ обойти это поведение?
Если это помогает, вот мой код для обработки KeyEvents:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (key.matches("[0-9*/+-=.()^%]")) {
controller.getButton(key).fire();
}
}
EDIT: Нашел обходной путь. Проблема, о которой говорил Эли Садофф, заключается в том, что мой карет - это мертвый ключ на моей клавиатуре. Поскольку мой обязательными для кареткой является «сдвиг + ¨», я был в состоянии решить, как это:
@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();
}
}
У вас есть эта проблема с '+', '(', ')' и '%' случайно? –
Нет, ни один из них. – Javatar4ever
Является ли ваш ключ каретки мертвым ключом на вашем компьютере? (Значение typing '^', а затем 'e' создаст' ê') –