当前位置: 首页 > 面试题库 >

如何在java.util.Timer中剩余时间?

窦宏旷
2023-03-14
问题内容

如何获取util.Timer中剩余的时间?我想做的是添加一个进度条,显示直到计时器重新开始之前剩余的时间。

这就是我到目前为止所得到的:

int seconds = 8;

java.util.Timer timer = new Timer();
timer.schedule( new TimerTask(){
    public void run(){
        // Do something
        // Add a progressbar that displays time left until the timer "starts over".
    },0,(long) (seconds*1000));

问题答案:

您将需要第二个计时器以特定间隔刷新gui。
实现此目的的另一种方法是每秒激活一个计时器并更新ui中的计数。如果时间到了,请致电您的具体措施。

一个仅带有控制台输出的简单示例:

TimerTask task = new TimerTask()
{
    int seconds = 8;
    int i = 0;
    @Override
    public void run()
    {
       i++;

       if(i % seconds == 0)
           System.out.println("Timer action!");
       else
           System.out.println("Time left:" + (seconds - (i %seconds)) );
    }
};

Timer timer = new Timer();
timer.schedule(task, 0, 1000);

它的输出将是:

Time left:7
Time left:6
Time left:5
Time left:4
Time left:3
Time left:2
Time left:1
Timer action!
Time left:7
Time left:6
Time left:5
Time left:4
Time left:3
Time left:2
Time left:1
Timer action!
Time left:7
Time left:6
...

然后只需使用代码更改System.out即可更新进度条。记住:java.util.Timer开始自己Thread。Swing不是线程安全的,因此您需要将每个gui更改代码放入SwingUtilities.invokeLater()
如果您不执行任何长时间运行的任务,则每次计时器达到8秒标记时,您可能都希望javax.swing.Timer直接使用它。它使用EDT而不是使用它自己的EDT
Thread,因此您不需要使用来同步对Swing组件的调用SwingUtilities.invokeLater()



 类似资料:
  • 问题内容: +--------------------+ | | | | | | | | | 1 | | | | | | | | | +--------------------+ | | | | | | | | | 2 | | | | | | | | | +--------------------+ 如上所示的(1)的内容是未知的,因为它在动态生成的页面中可能会增加或减少。如上所示,第二个div(

  • 问题内容: 我有这个问题,我有两个股利: 如何使div2占据页面的剩余高度? 问题答案: 使用绝对定位:

  • 如果它们是具有以下数据的两个过程,甘特图应该如何?(SRTF 调度) 进程到达突发 P1 0 17 P2 1 16 那么,进程P1会先完成,然后P2会开始执行……还是P1必须等待16毫秒?

  • 本文向大家介绍如何确定Oracle中剩余的SQL工作量?,包括了如何确定Oracle中剩余的SQL工作量?的使用技巧和注意事项,需要的朋友参考一下 问题: 您想知道长时间运行的SQL可能需要多长时间才能完成。 解 我们可以使用“ V $SESSION_LONGOPS”视图来了解查询剩余的执行时间,“ V $SESSION_LONGOPS”视图显示已运行超过六秒钟的各种数据库操作的状态。请注意,该视

  • 问题内容: 我有2个div: 页面左侧有一个,右侧是一个。左侧的一个宽度固定,我希望右侧的一个填充剩余空间。 问题答案: 这似乎可以完成您想要的。

  • 问题内容: 给定月份剩余的天数如何找到当月剩余的天数?例如,如果当前月份为11月,而今天为16/11/2016,则月份中的天数``经过的天数=?我想动态地进行操作在我的示例中30′16 = 14 问题答案: 只需使用Datepart函数: