我正在开发一个复杂的桌面应用程序,该应用程序具有多个用于工作流的选项卡窗格,每个窗格都填充了不同的按钮、标签和其他UI元素。它们中的每一个都需要定义一个助记符,而这些助记符往往会因为定义的字母用完而发生冲突。
我注意到,在Windows上,如果为两个控件定义了相同的助记符,那么按下它将在它们之间循环,并且它们在松开键时激活。使用Swing,如果用同一个键定义其中两个助记符,助记符就不会激活。
有解决办法吗?
我的建议是使用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();
}
}
你可以找到一种方法让它在真实的代码中工作。