您将需要第二个计时器以特定间隔刷新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!"); elseSystem.out.println("Time left:" + (seconds - (i %seconds)) ); }};Timer timer = new Timer();timer.schedule(task, 0, 1000);它的输出将是:
Time left:7Time left:6Time left:5Time left:4Time left:3Time left:2Time left:1Timer action!Time left:7Time left:6Time left:5Time left:4Time left:3Time left:2Time left:1Timer action!Time left:7Time left:6...
然后只需使用代码更改System.out即可更新进度条。记住:
java.util.Timer开始自己
Thread。Swing不是线程安全的,因此您需要将每个gui更改代码放入
SwingUtilities.invokeLater()!
如果您不执行任何长时间运行的任务,则每次计时器达到8秒标记时,您可能都希望
javax.swing.Timer直接使用它。它使用EDT而不是使用它自己的EDT
Thread,因此您不需要使用来同步对Swing组件的调用
SwingUtilities.invokeLater()。



