【问题标题】:Java Stopwatch that updates the GUI every second?每秒更新 GUI 的 Java 秒表?
【发布时间】:2012-06-18 23:11:25
【问题描述】:

我是一名 Java 初学者,我正在尝试构建一个简单的秒表程序,以在摆动 GUI 上显示时间。制作秒表很容易,但是我找不到一种方法让 GUI 每秒更新一次并在秒表上显示当前时间。我该怎么做?

【问题讨论】:

标签: java swing user-interface stopwatch


【解决方案1】:

应该这样做:

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”;显示了一种方法here

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

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

【讨论】:

  • 我使用 netbeans 的可视化编辑器制作了 GUI,如何在 GUI 中引用 jlabel?
  • @trashgod 哪一部分需要invokeLater?
  • @GETah UpdateUITaskrun() 方法,因为 java.util.Timer 将在 EDT 之外运行它。
  • (另外,ScheduleExecutorService 可能更现代地等同于 java.util.Timer,如果只是在需要运行后台任务的任何地方使用相同的 API。)
  • @trashgod 感谢您的更新;)+1 为您回答其他相关问题;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多