我目前正在用Java構建計算器,並已開始實施 關鍵偵聽器。它工作得很好,但是當我嘗試輸入脫字符號(^)時,它不會立即註冊。您必須先按另一個鍵才能使其顯示。插入(^)不立即註冊。 Java關鍵字偵聽器
我想這是因爲它使用相同的行爲,當您嘗試在常規文本文檔中鍵入插入符 。但是有什麼辦法可以解決這個問題嗎?
如果有幫助,這是我的代碼來處理的KeyEvents:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (key.matches("[0-9*/+-=.()^%]")) {
controller.getButton(key).fire();
}
}
編輯:找到一個解決辦法。 Eli Sadoff提到的問題是我的脫字符號是我鍵盤上的一個死鑰匙。由於我的插入符號結合是「移+¨」,我能解決這個問題是這樣的:
@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
您的插入鍵是您計算機上的死鎖嗎? (意思是輸入'^',然後'e'會產生'ê') –