在任何法语键盘(AZERTY)上,使用 Shift + 生成点字符'。; 使用 Shift + ù 组合生成%char'%'时的组合
因此,当我在GWT文本区域中键入上述组合之一来编写'。'时或'%',为这些事件生成的关键代码在前一种情况下为KEY_DELETE
,在后一种情况下为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错误吗?是否有一种更优雅的方式来处理这个问题?
答案 0 :(得分:2)
这似乎不是特定于GWT的错误 - 请参阅Issue 3753以及那里的所有参考资料,以全面了解问题。基本上,不同的浏览器如何处理关键事件是一个巨大的混乱 - GWT团队似乎正在努力解决这个问题,GWT 2.1应该包含全面的修复(无论什么时候出现 - 同时,它可能值得一试问题的状态并尝试SVN版本。)