倒计时窗口在很多程序里面也很重要,今天我想分享一下如何制作一个简易的倒计时窗口。
示例:制作一个五秒后会关闭的窗口并有倒计时显示。
效果:
创建一个类AutoClose为窗口的类:
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;
public class AutoClose{
static int i=5; //表示延迟时间
static JFrame j=new JFrame("2333");
static JLabel l=new JLabel("窗口将在"+AutoClose.i+"秒后关闭!"); //必须先设置文本,否则在一秒后才会显示文本!!!
public static void main(String[] args) {
j.setSize(350,150);
JPanel p=new JPanel();
l.setFont(new Font("宋体", Font.PLAIN, 30));
l.setBounds(23, 37, 282, 46);
p.setLayout(null);
p.add(l);
j.getContentPane().add(p);
new DelayTest().t();
j.show();
}
}
再创建一个类 DelayTest,用于计时和延时:
import java.util.Timer;
import java.util.TimerTask;
public class DelayTest {
public void t() {
if(AutoClose.i>0) { //判断:时间大于0时---执行延时语段
Timer timer=new Timer();
timer.schedule(new TimerTask() {
public void run() {
AutoClose.i=AutoClose.i-1; //窗口上显示的时间减1
AutoClose.l.setText("窗口将在"+AutoClose.i+"秒后关闭!"); //重设窗口的显示时间
if(AutoClose.i==0) { //判断:时间到时---关闭窗口
AutoClose.j.dispose();
}else { //否则:返回,再计时一秒
new DelayTest().t();
}
}
}, 1000); //延迟一秒
}
}
}
其原理是:窗口显示出来后,会执行延迟类(DelayTest)里的延时方法,延时方法每一秒会将时间变量(i)减1并刷新窗口上的文本,再判断时间是否到了,时间没到会再返回并重新执行延时方法,直到时间变量减为零为止。判断时间变量为0,便关闭窗口。