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 に答える