Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 再次运行程序_Java_Panel_Option - Fatal编程技术网

Java 再次运行程序

Java 再次运行程序,java,panel,option,Java,Panel,Option,我目前正在开发java版本的扫雷舰。当用户点击地雷或赢得游戏时,我想实现一个“是,否”选项面板,它将作为“您想再玩一次吗”之类的功能。实现no很简单,但是我在实现yes选项时遇到了一个问题,在这里程序再次运行,但在我的例子中,它只是运行程序的一个新实例,而不关闭旧实例。建议?谢谢 以下是用户找到所有地雷并获胜的代码: if (check == nomines) { endtime = System.nanoTime();

我目前正在开发java版本的扫雷舰。当用户点击地雷或赢得游戏时,我想实现一个“是,否”选项面板,它将作为“您想再玩一次吗”之类的功能。实现no很简单,但是我在实现yes选项时遇到了一个问题,在这里程序再次运行,但在我的例子中,它只是运行程序的一个新实例,而不关闭旧实例。建议?谢谢

以下是用户找到所有地雷并获胜的代码:

 if (check == nomines)
           {
               endtime = System.nanoTime();
               Component temporaryLostComponent = null;
               JOptionPane.showMessageDialog(temporaryLostComponent, "Congratulations, you won! It took you " + (int)((endtime-starttime)/1000000000) + " seconds!");

               int p = JOptionPane.showConfirmDialog(this, "Play again?","Minefield",JOptionPane.YES_NO_OPTION);
               if (p == 1)
               {
                   System.exit(0); 
               }
               else 
               {
                   new Minefield(); 
               }

           }
       }

使用边做边做循环,可以简化您的工作

do{

  // your all operations...

 // at last prompt  yes or no ?
} while(choice.equalsIgnoreCase("yes"));

为什么不重新设置游戏场并随机放置地雷?您还需要处理当前正在运行的实例。我不确定Minefield是如何实现的,因为您还没有展示,但是如果它是JFrame,您可以使用.dispose()运行您在开始时所做的任何初始化一切的构造函数/方法。好主意。如果所有的初始化都是在
Minefield()
构造函数中完成的,那么将其全部取出,放入一个方法中,然后可以调用该方法