如何重置JFrame(重启游戏)?

时间:2012-02-12 12:48:09

标签: java swing restart

这是一个我开始研究的java游戏。我一直在尝试添加一个按钮,上面写着“RESTART”,点击它会重置整个程序,就像它在开始时那样(我的意思是游戏开始)。

这是我的代码: 有2个按钮,即“PLAY”& “检查谁!”

对于“PLAY”这是代码:

    int delay = 1000;
 final Timer timer = new Timer();
  timer.schedule(new TimerTask(){
  public void run(){
  String b = "C:\\Users\\COMPUTER\\Desktop\\deck\\.png";
Random r = new Random();
r1 = r.nextInt(upplim)+lolim;
String a = Integer.toString(r1);
String c = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+a+".png";
        l1.setIcon(new ImageIcon(c));  
  }
  },delay, 50);

为“检查谁!”这是代码:

final int p = h;
System.out.println("ANSWER IS:"+p);
        int delay2 = 1000;

     for (int i = 1; i < 53; i++)
{
    while(true)
    {
         next = rng.nextInt(Ulim) + Llim;
        if (!generated.contains(next))
        {
            generated.add(next);
            break;
        }     
    }
    if ( i % 2 == 0 ) 
   {count++;
    deck1[e] = next;deck1count++;
    e++;
} 
   else {count++;
       deck2[f] = next;deck2count++;
    f++;
   }    
    System.out.println(""+next); 
        if(next==p)
        {break;}
}
 if(deck1count==deck2count)
{
count=count-2;
fcard=99;}  

 final Timer timer2 = new Timer();
         timer2.schedule(new TimerTask(){
 public void run(){  
do 
{
System.out.println("dec2       "+deck2[z]);
String a = Integer.toString(deck2[z]);
       String c = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+a+".png";
       l3.setIcon(new ImageIcon(c));

System.out.println("dec1       "+deck1[z]);
String b = Integer.toString(deck1[z]);
       String d = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+b+".png";
       l4.setIcon(new ImageIcon(d)); 

System.out.println("count"+count);
z++;
count=count-2;

if(fcard==99&&count<0)
{l3.setIcon(new ImageIcon("C:\\Users\\COMPUTER\\Desktop\\deck\\99.png"));
}
}while(count>0&&z==p);


if(count<0)
  {timer2.cancel();
  reschk=11;
timer2.purge();
  }
} 
  },delay2, 1000);  

还有另一组代码写在标签的MouseClicked事件上,但我不认为这对它有多大帮助。 我试过了:

classname.this.dispose();
        classname classname = new classname();

但它只是关闭整个程序。还有其他方法可以重置游戏吗? 谢谢阅读。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

您显然拥有更新的值,以便您可以在不同的状态下表示您的游戏。如果要重新启动游戏,只需将所有这些值设置回原始起始值即可。您可以为此编写一个Restart方法。

此外,dispose()旨在关闭窗口。

编辑:没有神奇的方法可以调用来重置你的程序。

答案 1 :(得分:2)

  1. 对于基于Swing的容器,请使用Swing Timer而不是util.Timer,否则util.Timer的输出应为out of EDT
  2. 您无需处置旧容器并重新创建新游戏,您可以删除其内容。
  3. 此处发布的代码不清楚任何其他内容,也不是问题

答案 2 :(得分:1)

将游戏状态保持在一个不同的类中,并用新的实例替换它。