-1

矢印キーが押されたかどうかをリッスンするパネルにキーバインドを実装する作業を行っています。

それらが押されると、アクションを実行します。私のコード:

private void createKeyBindings(){
        actionMap = this.getActionMap();
        inputMap = this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        this.getInputMap().put(KeyStroke.getKeyStroke("a"),
                "pressedUpArrow");
        this.getInputMap().put(KeyStroke.getKeyStroke("released UP"),
                "releasedUpArrow");
        this.getActionMap().put("pressedUpArrow",
                 new PressedUpArrowAction());
        this.getActionMap().put("releasedUpArrow",
                new ReleasedUpArrowAction());
    }

アクションは機能します (それらをボタンにマップしてボタンを押すと、アクションが本来行うべきことを実行します)。

これらのキーバインドは、私のパネル (タブ付きペインのタブ) に対して呼び出されます。キーストロークを上に押した状態と、(それが問題ではないことを確認するため) だけの両方を試しました。問題のタブがフォーカスされているときにこれらのキーを入力します。

何かアドバイス?

4

1 に答える 1

3

問題の考えられる原因の 1 つは次のとおりです。

this.getInputMap().put(KeyStroke.getKeyStroke("a"),
            "pressedUpArrow");

これでいいのではないですか?

this.getInputMap().put(KeyStroke.getKeyStroke("UP"),
            "pressedUpArrow");

現在コーディングしている方法では、あるキーを押して別のキーを離すと、PressedUpArrowAction()andが起動します。ReleasedUpArrowAction()

于 2012-10-24T14:01:34.807 に答える