我的程序有一个菜单栏,其中一个菜单称为“文件”。在文件菜单中,有4个选项:“新建”,“暂停”,“取消暂停”和“退出”。所有这五个都分配了助记符,但是只有File的助记符才能按我希望的方式工作。

其他四个起作用,但只有在我首先激活File的助记符时它们才起作用。即,要激活“新建”,我需要按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);
   }

最佳答案

所以我要回答我自己的问题。我了解到,只有在菜单处于活动状态时,我才尝试使用助记符。这就是为什么他们使用“文件”选项而不使用“新游戏”选项的原因,除非文件选项已经打开。它工作正常,只是我不了解它如何工作。

10-05 23:00