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 に答える