我有代码:
public class MenuBar extends JFrame {
public MenuBar() {
initUI();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
JMenuItem eMenuItem = new JMenuItem("Exit");
JMenuItem oMenuItem = new JMenuItem("Open Another");
eMenuItem.setMnemonic(KeyEvent.VK_E);
oMenuItem.setMnemonic(KeyEvent.VK_O);
eMenuItem.setToolTipText("Exit application");
oMenuItem.setToolTipText("Open another Window");
eMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
oMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
main(null);
}
});
file.add(eMenuItem);
file.add(oMenuItem);
menubar.add(file);
setJMenuBar(menubar);
setTitle("Simple menu");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MenuBar ex = new MenuBar();
ex.setVisible(true);
}
});
}
}
它工作正常,但我对 setMnemonic 有疑问。您将如何为 eMenuItem 制作助记符只是按下 E,而不是 Alt + E?感谢您提供的所有帮助! (请注意,由于长度问题,我故意没有导入)
最佳答案
来自docs设置助记符:
The mnemonic is the key which when combined with the look and feel's mouseless modifier (usually Alt) will activate this button if focus is contained somewhere within this button's ancestor window.
因此使用 setMnemonic 做这件事是不可能的。
但是,您可以使用 setAccelerator为 JMenuItem
定义的方法,传递像 KeyStroke.getKeyStroke('e');
或者,正如 Joop Eggen 在此答案的评论中指出的那样,您也可以使用 MenuKeyListener这允许更好地控制执行操作的特定事件。
关于java - 关于setMnemonic的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507526/