2010-04-27 63 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版本)。