2010-04-27 44 views
3

在任何法語鍵盤上(AZERTY)dot char'。'移位 + ;組合而百分比炭「%」 + ù組合產生GWT:使用法語鍵盤生成的錯誤鍵代碼

因此,當I型在GWT文本區寫入上述組合中的一個「」或'%',則爲這些事件生成的鍵碼爲KEY_DELETE,前者爲KEY_LEFT,後者爲KEY_LEFT

TextArea txtArea = new TextArea(); 
txtArea.addKeyPressHandler(new KeyPressHandler() { 
      public void onKeyPress(KeyPressEvent event) {     
       switch (charCode) { 
        case KeyCodes.KEY_LEFT: { // key code 37 
         System.out.write("KEY LEFT");  
         break; 
        } 
        case KeyCodes.KEY_DELETE: { // key code 46     
         System.out.write("DELETE"); 
         break; 
        } 
       } 

解決方法:獲得則charCode,做一個字符匹配:

charCode = event.getCharCode(); 
if (charCode == '.') {...} 
else if (charCode == '%') {...} 

這是一個GWT的錯誤?有沒有更好的方法來處理這個問題?

回答

2

看來這不是一個GWT特定的錯誤 - 請參閱Issue 3753以及所有參考資料,以全面瞭解問題。基本上,不同的瀏覽器處理關鍵事件的方式非常混亂 - GWT團隊似乎正在努力解決這個問題,GWT 2.1中應該包含一個全面的解決方案(無論何時出現 - 在此期間,可能值得檢查問題的狀態並嘗試SVN版本)。