我有代码:
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?感谢您的帮助! (请注意,对于长度问题,我不会完全保留进口)
最佳答案 从setMnemonic的
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来做这件事是不可能的.
但是,您可以使用为JMenuItems定义的setAccelerator方法,传递KeyStroke.getKeyStroke(‘e’)之类的击键;
或者,您可以像Joop Eggen在本回答的评论中指出的那样使用MenuKeyListener,它允许更好地控制对该动作执行的特定事件.