Мнемоника работает для MenuBar, но не MenuItems - PullRequest
0 голосов
/ 26 апреля 2018

В моей программе есть строка меню с одним меню, которое называется «Файл». Внутри файлового меню есть 4 опции: «Новый», «Пауза», «Отменить» и «Выход». Все пять из них имеют мнемонику, назначенную, однако, только одна для Файла работает так, как я надеялся.

Четыре других работают, но они работают, только если я сначала активирую мнемонику для Файла. т.е. чтобы активировать «Новый» мне нужно нажать 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);
   }

1 Ответ

0 голосов
/ 04 мая 2018

Итак, я собираюсь ответить на свой вопрос. Я узнал, что мнемоника, как будто я пытался использовать только работу, когда меню активно. Вот почему они работали для опции «Файл», но не для опции «Новая игра», если опция файла не была уже открыта. Это работало правильно, просто не так, как я понял, как это работает.

...