一, 源程序
- 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();
- }
- }
二, 结果
来源: http://www.bubuko.com/infodetail-3109393.html