【问题标题】:How to make a Count Down Timer in Java [duplicate]如何在 Java 中制作倒数计时器 [重复]
【发布时间】:2016-12-07 15:26:06
【问题描述】:

我正在开发此应用程序以在用户给定的时间内关闭/重新启动和休眠计算机。我附上了我正在开发的应用程序的图片。用户可以在给定用户的时间内选择小时、分钟或秒来关闭/重新启动或休眠计算机。我附上了我正在使用的代码示例,但它没有倒计时

public void cal() {
    int seconds = (int) jSpinner1.getValue();
    int minutes = (int) jSpinner2.getValue();
    int hours = (int) jSpinner3.getValue();

    int SECONDS_IN_A_DAY = 24 * 60 * 60;

    Calendar day = Calendar.getInstance();

    day.set(Calendar.SECOND, seconds);
    day.set(Calendar.MINUTE, minutes);
    day.set(Calendar.HOUR_OF_DAY, hours);


    long difference = day.get(seconds + minutes + hours);
    long allSeconds = difference / 1000;

    long days = allSeconds / SECONDS_IN_A_DAY;
    long secondsDay = allSeconds % SECONDS_IN_A_DAY;

    final long secondsinaDay = secondsDay % 60;
    final long minutesinaDay = (secondsDay / 60) % 60;
    final long hoursinaDay = secondsDay / 3600;

    final java.util.Timer timer = new java.util.Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            System.out.printf("%d hours, %d minutes and %d seconds\n", hoursinaDay, minutesinaDay, secondsinaDay);
            jLabel5.setText(String.valueOf(hoursinaDay));
            jLabel6.setText(String.valueOf(minutesinaDay));
            jLabel7.setText(String.valueOf(secondsinaDay));

            //What should be in here if I needed to count down the Timer??????
        }
    }, 1000, 1000);

}

【问题讨论】:

  • 这是什么问题? “它不计算时间”是什么意思?
  • 您是否尝试过为您的计数器使用线程或作业?
  • hoursinaDay,例如,总是相同的值...
  • 您的 TimerTask 不会减少剩余时间值。它应该每次将剩余的秒数减少一秒。
  • @david Java(通常是大多数计算机系统)不是实时的,因此无法保证任务会准确每 1 秒执行一次;如果重复次数足够多,累积的误差可能会很大。对于每次执行,获取当前时间并计算剩余时间比每次简单地“删除 1 秒”要好得多,即使有时会导致“跳过”一秒。

标签: java timer countdown


【解决方案1】:

如果没有你正确解释发生了什么是很难的,但至少你应该计算离开任务内部的时间值。

任务外的代码只执行一次,每秒执行一次的是任务的run()方法内的代码。

否则,即使任务执行了,它也总是会在标签中放入相同的值。

【讨论】:

  • 我想不到让时间倒计时@SJuan76
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
相关资源
最近更新 更多