JMenu многократно показывает showMessageDialog

Я установил 2 пункта Jmenu, один - «Новая игра», другой - «Об игре». Однако, когда я запускаю программу и нажимаю «Новая игра», появляется диалоговое окно «Об игре», так как я могу решить эту проблему?

 public Game() {
     JMenuBar menuBar = new JMenuBar();
     this.mainFrame.setJMenuBar(menuBar);
     JMenu aMenu = new JMenu ("New Game");
     menuBar.add(aMenu);
     newMenuItem("New Game", aMenu, this);
     JMenu bMenu = new JMenu("About");
     menuBar.add(bMenu);
     newMenuItem("About the game",bMenu,this);

      }


 public void aboutGame () {
    final String AboutGameText = 
               " The game is about...";
         JOptionPane.showMessageDialog(this.mainFrame, AboutGameText, "About the game", JOptionPane.PLAIN_MESSAGE);

   }



  public void actionPerformed(ActionEvent arg0) {
    if (arg0.getActionCommand().equals("New Game")) Game();
    if (arg0.getActionCommand().equals("About the game")); aboutGame();


}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В соответствии

if (arg0.getActionCommand().equals("About the game")); aboutGame();

После оператора if ставится точка с запятой. По сути, это сокращает оператор if до оператора if без тела. Таким образом, jvm обработает, истинно это или нет, отбросит результаты и перейдет к следующей строке, которая является строкой aboutGame(). Если вы удалите его, проблема исчезнет. Кстати, никогда не стоит опускать фигурные скобки, даже в одной строке, если операторы

if (arg0.getActionCommand().equals("About the game")) {
    aboutGame();
}

Другие вопросы по теме