7

我有一个带有选项卡式窗格和不同组件的应用程序。我已将 MenuItem 设置为带有加速器的操作:

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 键的加速器不起作用。F7 键有效。

是否有优先于我的加速器的 Swing 元素上的默认加速器?

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 回答