GWT - 如何将keyboardlistener添加到画布?

时间:2012-05-14 19:02:49

标签: gwt canvas

我正在尝试将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。

1 个答案:

答案 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