2016-11-14 35 views
2

我目前正在用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(); 
    } 
} 
+0

偶然出現'+','(',')'和'%'這個問題嗎? –

+0

不,他們都不是。 – Javatar4ever

+1

您的插入鍵是您計算機上的死鎖嗎? (意思是輸入'^',然後'e'會產生'ê') –

回答

2

的問題是,你正在使用您的計算機對待^爲死鍵輸入鍵盤佈局,因爲它是一個組合變音符號。解決此問題的方法是將輸入鍵盤佈局更改爲不會將^作爲組合變音符號的鍵盤。這可以通過鍵入^ + e並查看它是否導致ê^e

+0

這確實是對的,謝謝! – Javatar4ever

+1

將我的解決方法發佈爲問題編輯。 – Javatar4ever

+0

@ Javatar4ever好的工作! –

相關問題