java - 如何用JLabel创建定时器?

标签 java swing timer

我想在我的 JPanel 中显示一个带有定时器的 JLabel 在此模式下,例如:

03:50 sec
03:49 sec
....
....
00:00 sec

所以我构建了这段代码:

@SuppressWarnings("serial")
class TimeRefreshRace extends JLabel implements Runnable {

    private boolean isAlive = false;

    public void start() {
        Thread t = new Thread(this);
        isAlive = true;
        t.start();
    }

    public void run() {
        int timeInSecond = 185
        int minutes = timeInSecond/60;
        while (isAlive) {
            try {
                //TODO
            } catch (InterruptedException e) {
                log.logStackTrace(e);
            }
        }
    }

}//fine autoclass

通过这段代码,我可以启动 JLabel

TimeRefreshRace arLabel = new TimeRefreshRace ();
arLabel.start();

所以我的时间是秒的,例如 180 秒,我该如何创建计时器?

最佳答案

这是一个如何构建倒计时标签的示例。您可以使用此模式来创建您的组件。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
import javax.swing.WindowConstants;

public class TimerTest {

    public static void main(String[] args) {
        final JFrame frm = new JFrame("Countdown");
        final JLabel countdownLabel = new JLabel("03:00");
        final Timer t = new Timer(1000, new ActionListener() {
            int time = 180;
            @Override
            public void actionPerformed(ActionEvent e) {
                time--;
                countdownLabel.setText(format(time / 60) + ":" + format(time % 60));
                if (time == 0) {
                    final Timer timer = (Timer) e.getSource();
                    timer.stop();
                }
            }
        });
        frm.add(countdownLabel);
        t.start();
        frm.pack();
        frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frm.setVisible(true);
    }

    private static String format(int i) {
        String result = String.valueOf(i);
        if (result.length() == 1) {
            result = "0" + result;
        }
        return result;
    }
}

关于java - 如何用JLabel创建定时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33478392/

相关文章:

java - 框架打不开

Java swing JLabel 未显示

javascript - JavaScript 中事件处理和定时器服务的优先级是什么?

java - appcompat_v7 和 android-support-v7-appcompat 之间的区别?

java - 从artifactory下载最后一个maven快照

java - 使用 java/scala API 进行 Neo4j lucene 搜索

java - ExecutorService 在频繁关闭后导致内存不足异常

java - JLabel 的 setBorder 方法导致绘画问题

android - 确保 Android 应用程序正在运行

algorithm - 如何最好地在 R 中创建定时器函数