2011-11-21 33 views
2

我有這樣的代碼:試圖獲得的字符代碼ENTER鍵

newSymbolTextBox.addKeyPressHandler(new KeyPressHandler() { 
    public void onKeyPress(KeyPressEvent event) { 
     System.out.println("foo =" + KeyCodes.KEY_ENTER); 
    System.out.println("bar =" + event.getCharCode()); 
    } 
}); 

當我按下Enter鍵,我得到這樣的輸出:

foo =13 
bar = 

我預計bar =後的值。任何想法?

+3

這是使用標準Java API還是其他一些類似GWT的庫? – berry120

+1

你的班級名稱很奇怪。我不認爲Java中有一個KeyPressEvent類。你在用什麼? –

+0

@ berry120是的!我正在使用GWT,我不知道可以算......我只是從Java和GWT開始。 – ziiweb

回答

7

實際上,價值就在那裏。你沒有看到任何東西的原因是因爲該字符是回車符。我相信回車,只是移動下一行(你可以谷歌它的確切功能)。如果你谷歌「ascii表」,你會看到,你從KeyCodes.KEY_ENTER得到的13對應CR,回車符。

+0

@Justin,我試過了,但它返回0. I從這裏獲取我的代碼:http://code.google.com/webtoolkit/doc/latest/tutorial/manageevents.html。 Google教程是否錯誤? – ziiweb

+0

您不應該需要轉換'getCharCode()'返回的字符。字符和整數是相同的。你可以直接比較他們沒有任何麻煩。例如:'A'== 65評估爲真。在'bar ='之後沒有看到任何東西的唯一原因是因爲回車符(int value = 13)與任何可見字符都不對應,只是換行。 – Tyler

+0

Tyler,chars和ints在內部是一樣的,但輸出方式不同。如果情況並非如此,您將永遠無法'println'對應於ASCII字符的整數。通過強制轉換爲int,您告訴輸出例程「我想顯示整數值,而不是字符表示」。 –

0

KeyCodes.KEY_ENTER是Enter鍵的整數值。 event.getCharCode()是字符表示,所以它會在bar =

9

之後顯示爲換行符您需要使用event.getNativeEvent().getKeyCode()或切換到KeyDownHandler

newSymbolTextBox.addKeyPressHandler(new KeyDownHandler() { 
    public void onKeyDown(KeyDownEvent event) { 
     System.out.println("foo =" + KeyCodes.KEY_ENTER); 
     System.out.println("bar =" + event.getNativeKeyCode()); 
    } 
}); 

參見http://code.google.com/p/google-web-toolkit/issues/detail?id=5558

+0

這是正確的答案。 –

0

在窗口與Java爲兩種情況下7個返回10。

並顯示您需要將它轉換爲int的字符的數值。

System.out.println((int) e.getKeyChar()); 
相關問題