我有这个代码:
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 =
之后的值。有什么想法吗?
答案 0 :(得分:8)
事实上,价值就在那里。你没有看到任何东西的原因是因为这个角色是回车。我相信回车只是移动下一行(你可以谷歌它的确切功能)。如果你google" ascii table"你会看到你从KeyCodes.KEY_ENTER
获得的13对应CR(回车符)。
答案 1 :(得分:8)
您需要使用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
答案 2 :(得分:0)
KeyCodes.KEY_ENTER
是Enter键的整数值。 event.getCharCode(
)是字符表示,因此它会在bar =
答案 3 :(得分:0)
在带有java 7的Windows中,两种情况都返回10。
要显示char的数字值,需要将其转换为int。
System.out.println((int) e.getKeyChar());