2

我正在尝试将键盘侦听器添加到 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 中尝试过。

4

1 回答 1

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);

输出:(当我在浏览器上选择画布后按'i','u','y'时)

key: I
keypressed :73
key: U
keypressed :85
key: Y
keypressed :89
于 2012-05-16T09:24:51.413 回答