Java Swing 中冲突的助记符

Rex*_*Rex 5 java swing mnemonics

我正在开发一个复杂的桌面应用程序,其中包含多个用于工作流的选项卡式窗格,每个窗格都塞满了不同的按钮、标签和其他 UI 元素。它们中的每一个都需要一个定义的助记符,而这些经常因为用完要定义的字母而发生冲突。

我注意到在 Windows 上,如果为两个控件定义了相同的助记符,则按下它会在它们之间循环,并在释放键时激活它们。使用 Swing,如果您使用相同的键定义其中的 2 个,助记符将不会激活。

有解决方法吗?

dav*_*XYZ 1

我的建议是使用 a KeyListener,然后根据显示的选项卡区分操作。

伪代码

public void keyPressed(KeyEvent e){
    //assuming 'O' activates Open button on two different tabs
    if(key == 'O'){
        if(activeTab == tab1)
            doStuff1();
        else if(activeTab == tab2)
            doStuff2();
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以找到一种方法使其在实际代码中工作。