有没有一个Swing元素默认的快捷键是F6?

7

我有一个带有选项卡和不同组件的应用程序。我已将一个菜单项设置为操作,并设置了加速键:

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元素上具有优先级,从而覆盖了我的加速器吗?

1个回答

10

您可以在BasicLookAndFeel.java(或类似的类,具体取决于您使用的外观和感觉)中查找并搜索F6。

看起来F6被JSplitPane用于在内容和分隔符之间切换焦点。 要删除它,您可以使用以下内��(未经测试,我认为删除实际操作更加困难,因为它可能在父输入映射中):

splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
  .put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), "none");

1
有人知道在哪里可以找到Swing组件使用的所有加速器的地方吗?这可能会很有用。 - Tony Chemit
1
请注意,JSplitPane也使用F8加速器。 - Tony Chemit
我来到这里是因为,事实证明,某个JTextPane破坏了我的菜单栏中的Ctrl+T加速键。在我的情况下修复它的代码是:textPane.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke('T', CTRL_DOWN_MASK), "Nothing"); - Dennis Soemers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接