使用线程来实现一个时间倒计时

来源:互联网 发布:网络人身攻击怎么办 编辑:程序博客网 时间:2024/06/11 14:39
package TestCountDown;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class CountDown extends JFrame {    JButton jButton;    JLabel jLabel;    int time=60;    public CountDown() {        FlowLayout fl=new FlowLayout(FlowLayout.CENTER);        this.setLayout(fl);        //为按钮jButton添加监听器,实现点击时倒计时重新开始        jButton=new JButton("重新开始");        jButton.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent arg0) {                dispose();//关闭当前窗口                new CountDown();//新建一个窗口            }        });        //匿名创建一个线程内部类来实现时间倒计时,这是整篇代码的核心        jLabel=new JLabel();        new Thread(){            public void run() {                while(time>0) {                    time--;                    if(time<6) {//当时间只剩5秒时闪红                        jLabel.setForeground(Color.RED);                    }                    jLabel.setText(time+"秒");                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }.start();        this.add(jButton);        this.add(jLabel);        this.setTitle("倒计时");        this.setSize(300, 200);        this.setResizable(true);        this.setVisible(true);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);    }    public static void main(String[] args) {        new CountDown();    }}

效果如下
这里写图片描述