7

タブ付きペインとさまざまなコンポーネントを含むアプリケーションがあります。アクセラレータを使用して MenuItem を Action として設定しました。

private final Action focusDefaultCommandsAction = new AbstractAction()
{
    {
        putValue(NAME, "Fokusiere Kommandoliste");
        putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0));
    }

    @Override
    public void actionPerformed(final ActionEvent e)
    {
        invokeShowCommandsList();
    }
};

F6 キーのアクセラレータが機能しないタブが 1 つあります。F7 キーが機能します。

私のアクセラレータよりも優先されるデフォルトのアクセラレータが Swing Element にあるのでしょうか?

4

1 に答える 1

10

これを BasicLookAndFeel.java (または使用する L&F に応じて同様のクラス) で調べ、F6 で検索します。

JSplitPane で F6 を使用して、コンテンツと仕切りの間でフォーカスを切り替えているようです。それを削除するには、次のようなものを使用できます(テストされていません。実際のアクションを削除するのは、親入力マップにある可能性があるため難しいと思います):

splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
  .put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), "none");
于 2011-11-23T15:31:03.937 に答える