Java秒表每秒更新一次GUI?

时间:2012-06-15 21:04:31

标签: java swing user-interface stopwatch

我是Java初学者,我正在尝试构建一个简单的秒表程序,在swing GUI上显示时间。制作秒表很简单,但我找不到每秒钟更新GUI的方法,并在秒表上显示当前时间。我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

这些方面应该做的事情:

import java.awt.EventQueue;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JLabel;

/** @see https://stackoverflow.com/a/11058263/230513 */
public class Clock {

    private Timer timer = new Timer();
    private JLabel timeLabel = new JLabel(" ", JLabel.CENTER);

    public Clock() {
        JFrame f = new JFrame("Seconds");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(timeLabel);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        timer.schedule(new UpdateUITask(), 0, 1000);
    }

    private class UpdateUITask extends TimerTask {

        int nSeconds = 0;

        @Override
        public void run() {
            EventQueue.invokeLater(new Runnable() {

                @Override
                public void run() {
                    timeLabel.setText(String.valueOf(nSeconds++));
                }
            });
        }
    }

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                final Clock clock = new Clock();
            }
        });
    }
}

timeLabel将始终显示计时器运行的秒数。

  1. 您需要正确格式化以显示" hh:mm:ss&#34 ;;显示了一种方法here

  2. 创建一个容器并为其添加标签,以便您可以将其显示为GUI的一部分。

  3. 使用javax.swing.Timer将结果与此alternate进行比较。