2015-09-23 2 views
-1

Как закрыть окно таймера через код, когда оно завершает его длительностью 30 секунд.Закрытие окна таймера обратного отсчета

Вот мой код

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

class CountdownTimer extends JFrame { 

    private static final long serialVersionUID = -3613327984360590187L; 

    public CountdownTimer() { 

     setTitle("Countdown Timer"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     final long MINUTES = 30000; 
     final SimpleDateFormat sdf = new SimpleDateFormat("mm : ss"); 
     final JLabel clock = new JLabel(sdf.format(new Date(MINUTES)), JLabel.CENTER); 
     JLabel text = new JLabel("Time Remaining: "); 
     int x = 0; 
     ActionListener actionListener = new ActionListener() { 
      long x = MINUTES - 1000; 

      public void actionPerformed(ActionEvent ae) { 
       clock.setText(sdf.format(new Date(x))); 
       x -= 1000; 
      } 
     }; 
     new javax.swing.Timer(1000, actionListener).start(); 

     JPanel jPanel = new JPanel(); 
     jPanel.add(text); 
     jPanel.add(clock); 
     getContentPane().add(jPanel); 
     pack(); 

    } 

    public static void main(String args[]) { 

     new CountdownTimer().setVisible(true); 

    } 
} 

Как я могу закрыть окно таймера с помощью кода, когда он завершает его длительность 30 сек.

Вот мой код

+1

Вызов 'Dispose()', когда 'x' является' <= 0'? Что за вопрос? – Holger

ответ

2
this.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)); 
+0

В своем коде это будет 'dispatchEvent (новый WindowEvent (CountdownTimer.this, WindowEvent.WINDOW_CLOSING)), хотя. –

+0

Самый сложный способ сказать 'yourFrame.setVisible (false);' ... – Holger

+0

Я предположил, что он хочет действительно закрыть программу. –

2

Попробуйте это:

public void actionPerformed(ActionEvent ae) { 
    clock.setText(sdf.format(new Date(x))); 
    x -= 1000; 
    if (x < 0) // Add this line 
     CountdownTimer.this.dispose(); // And this one too 
} 
Смежные вопросы