我正在尝试将keyboardlistener添加到GWT中的画布。但它不起作用。
我还在这个画布上添加了鼠标处理程序,它可以正常工作。
这是鼠标处理程序的代码(这可行):
canvas.addMouseMoveHandler(new MouseMoveHandler() {
public void onMouseMove(MouseMoveEvent event) {
mouseX = event.getRelativeX(canvas.getElement());
mouseY = event.getRelativeY(canvas.getElement());
}
});
这是键盘处理程序的代码(这不起作用):
canvas.addKeyDownHandler(new KeyDownHandler() {
public void onKeyDown(KeyDownEvent event) {
int key = event.getNativeKeyCode();
System.out.println("key: " + (char) key);
System.out.println("keypressed :"+ event.getNativeKeyCode());
}
});
有什么想法吗?
修改: 初始化我的画布的方式与此类完全相同:GwtCanvasDemo.java。我刚添加addkeydownhandler并没有工作。我试过Chrome和IE9。
答案 0 :(得分:2)
我试过这段代码。它为我工作。
RootPanel rootPanel = RootPanel.get();
final Canvas canvas = Canvas.createIfSupported();
canvas.addKeyDownHandler(new KeyDownHandler() {
public void onKeyDown(KeyDownEvent event) {
int key = event.getNativeKeyCode();
System.out.println("key: " + (char) key);
System.out.println("keypressed :"+ event.getNativeKeyCode());
}
});
rootPanel.add(canvas, 0 ,0);
输出:(当我在浏览器上选择画布后按'我','你','y'时)
key: I
keypressed :73
key: U
keypressed :85
key: Y
keypressed :89