1

我做了一个计时器,当它为 0 时,我想改变框架。它可以工作,但相同的框架会不断弹出并且不会停止。

查看 if 和 else 部分。

class SetTimer {
   private static final int TIMER_PERIOD = 1000;
   protected static final int MAX_COUNT = 5;
   private GameLuncher info;
   private int count;

   public SetTimer(GameLuncher gameLuncher) {
      this.info = gameLuncher;
      String text = " " + (MAX_COUNT - count) + " ";
      gameLuncher.setCountDownLabelText(text);
   }

   public void start() {
      new Timer(TIMER_PERIOD, new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
            if (count < MAX_COUNT) {
               count++;
               String text = " " + (MAX_COUNT - count) + " ";
               info.setCountDownLabelText(text);
            } else  {

               ((Timer) e.getSource()).stop();
                    new GameLuncher().setVisible(false);
                new MainFrame().setVisible(true);

            }
         }
      }).start();

   }

}
4

1 回答 1

3

正如 David Pärsson 所说,“new GameLuncher().setVisible(false)”不会隐藏已经创建的可见 GameLuncher 实例,而是创建一个新的 GameLuncher 并将其隐藏。

我建议 :

   ...
} else  {
   ((Timer) e.getSource()).stop();
   info.setVisible(false);
   new MainFrame().setVisible(true);
}
于 2012-12-01T08:49:21.617 回答