助记符适用于 MenuBar 但不适用于 MenuItems
Mnemonic working for MenuBar but not MenuItems
我的程序有一个菜单栏,其中有一个菜单名为 "File." 在文件菜单中有 4 个选项:"New"、"Pause"、"Unpause" 和"Exit"。所有这五个都分配了助记符,但只有文件的那个按我希望的方式工作。
其他四个有效,但只有我先激活文件的助记符,它们才有效。即要激活 "New",我需要按 Alt+F,Alt+N。我不认为助记符应该以这种方式工作,但我可能错了。
这是我目前的代码,也许有人可以指出我做错了什么。
//MENU BAR
private JMenuBar menuBar;
private JMenu fileMenu;
private JMenuItem newGame;
private JMenuItem pauseGame;
private JMenuItem unpauseGame;
private JMenuItem exitGame;
//CREATE THE FILE MENU
public void buildMenuBar(){
//INITIAILIZE
menuBar = new JMenuBar();
//BUILD FILE MENU
buildFileMenu();
//ADD TO MENU BAR
menuBar.add(fileMenu);
//SET
setJMenuBar(menuBar);
}
public void buildFileMenu(){
//INITIALIZE
fileMenu = new JMenu("File");
newGame = new JMenuItem("New");
pauseGame = new JMenuItem("Pause");
unpauseGame = new JMenuItem("Unpause");
exitGame = new JMenuItem("Exit");
//MNEMONICS
fileMenu.setMnemonic(KeyEvent.VK_F);
newGame.setMnemonic(KeyEvent.VK_N);
pauseGame.setMnemonic(KeyEvent.VK_P);
unpauseGame.setMnemonic(KeyEvent.VK_U);
exitGame.setMnemonic(KeyEvent.VK_X);
//LISTENERS
newGame.addActionListener(new MenuListener());
exitGame.addActionListener(new MenuListener());
//ADD TO FILEMENU
fileMenu.add(newGame);
fileMenu.add(pauseGame);
fileMenu.add(unpauseGame);
fileMenu.add(exitGame);
}
所以我要回答我自己的问题。我了解到像我尝试使用的助记符只有在菜单处于活动状态时才有效。这就是为什么他们使用 "File" 选项而不是 "New Game" 选项,除非文件选项已经打开。它工作正常,只是不是我理解的那样工作。
我的程序有一个菜单栏,其中有一个菜单名为 "File." 在文件菜单中有 4 个选项:"New"、"Pause"、"Unpause" 和"Exit"。所有这五个都分配了助记符,但只有文件的那个按我希望的方式工作。
其他四个有效,但只有我先激活文件的助记符,它们才有效。即要激活 "New",我需要按 Alt+F,Alt+N。我不认为助记符应该以这种方式工作,但我可能错了。
这是我目前的代码,也许有人可以指出我做错了什么。
//MENU BAR
private JMenuBar menuBar;
private JMenu fileMenu;
private JMenuItem newGame;
private JMenuItem pauseGame;
private JMenuItem unpauseGame;
private JMenuItem exitGame;
//CREATE THE FILE MENU
public void buildMenuBar(){
//INITIAILIZE
menuBar = new JMenuBar();
//BUILD FILE MENU
buildFileMenu();
//ADD TO MENU BAR
menuBar.add(fileMenu);
//SET
setJMenuBar(menuBar);
}
public void buildFileMenu(){
//INITIALIZE
fileMenu = new JMenu("File");
newGame = new JMenuItem("New");
pauseGame = new JMenuItem("Pause");
unpauseGame = new JMenuItem("Unpause");
exitGame = new JMenuItem("Exit");
//MNEMONICS
fileMenu.setMnemonic(KeyEvent.VK_F);
newGame.setMnemonic(KeyEvent.VK_N);
pauseGame.setMnemonic(KeyEvent.VK_P);
unpauseGame.setMnemonic(KeyEvent.VK_U);
exitGame.setMnemonic(KeyEvent.VK_X);
//LISTENERS
newGame.addActionListener(new MenuListener());
exitGame.addActionListener(new MenuListener());
//ADD TO FILEMENU
fileMenu.add(newGame);
fileMenu.add(pauseGame);
fileMenu.add(unpauseGame);
fileMenu.add(exitGame);
}
所以我要回答我自己的问题。我了解到像我尝试使用的助记符只有在菜单处于活动状态时才有效。这就是为什么他们使用 "File" 选项而不是 "New Game" 选项,除非文件选项已经打开。它工作正常,只是不是我理解的那样工作。