2

マルチタブのフレームがあり、異なるタブの下にある特定のボタンへのショートカットを設定する必要がありますが、同じキーを使用する必要があります。例えば:

tab1 の下には、F1 キーに反応する「Do that」ボタンがありますが、tab2 に切り替える場合は、F1 ボタンにも反応する「Do this」ボタンが必要ですが、tab1 でのアクションは必要です。解雇されません。

タブ/キー/パネルに追加しようとしkeylistenerましたが、それでも F1 キーを押すと、最初に実行されるアクションになります。

しかし、その理由は、次のような主要なイベントを制御するスイッチを使用しているためだと思いますcase KeyEvent.VK_F1:mybutton1.doclick();

では、異なるタブで個別に反応するアクションを分離するにはどうすればよいでしょうか? たとえば、フォーカスされたタブまたは他の何かを取得する方法はありますか?

よろしく。

編集:スイングアクションのコード:

    private class SwingAction extends AbstractAction {
    public SwingAction() {
        putValue(NAME, "mybutton");
        putValue(SHORT_DESCRIPTION, "Some short description");
    }
    public void actionPerformed(ActionEvent e) {
        mybutton.getInputMap().put(KeyStroke.getKeyStroke("F1"),"pressed");
        mybutton.getActionMap().put("pressed",mybutton.doClick());

    }
}

私は得る:

ActionMap 型のメソッド put(Object, Action) は、引数 (String, void) エラーには適用できません (Java/Swing の初心者には申し訳ありません)。

4

2 に答える 2

4

使用する

于 2012-05-23T07:51:39.190 に答える
3

KeyStrokeをボタンにバインドすると、doClick()視覚的および聴覚的なフィードバックが得られるという利点があります。しかし、あなたが観察したように、でdoClick()はありませんAction。代わりに、このActionに示すように、特定のボタンのdoClick()メソッドを呼び出す を作成し、それを目的の にバインドします。KeyStroke

于 2012-05-23T10:00:00.433 に答える