import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class JFCountDown extends JFrame {
private long countDown = 5 * 60 * 1000;
private JLabel jlCount = null;
public JFCountDown(){
super("Countdown");
guiInit();
pack();
setLocationRelativeTo(null);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
dispose();
}
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
new Thread(new CountDownTimer()).start();
}
private void guiInit(){
Container cont = getContentPane();
cont.setLayout(new GridBagLayout());
Insets i = new Insets(3, 3, 3, 3);
GridBagConstraints c = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, i, 0, 0);
jlCount = new JLabel(getCountDownAsString());
JButton jbClose = new JButton("Bitte das Programm schliessen");
cont.add(jlCount, c);
c.gridy++;
cont.add(jbClose, c);
jbClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
countDown = 0;
synchronized (JFCountDown.this) {
JFCountDown.this.notify();
}
}
});
}
private String getCountDownAsString(){
long min = countDown / (60000);
long sec = (countDown - (min * 60000)) / 1000;
return min + " min, " + sec + " sec";
}
private class CountDownTimer implements Runnable{
public void run() {
while(countDown > 0){
countDown-=1000;
jlCount.setText(getCountDownAsString());
synchronized(JFCountDown.this){
try {
JFCountDown.this.wait(1000);
} catch (InterruptedException e) {
}
}
}
if(countDown == 0){
JFCountDown.this.dispose();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JFCountDown().setVisible(true);
}
});
}
}