如何使用swing定时器进行for循环睡眠?

时间:2016-03-26 16:56:29

标签: java swing timer

如何在for循环中使用swing计时器进行睡眠?

for(int j = 0; j< 0; i ++){         的System.out.println(J);         尝试{             了Thread.sleep(1000);         } catch(例外e){             //         }     }

2 个答案:

答案 0 :(得分:2)

我认为这个问题正在接受负面投票,因为:

  • 目前尚不清楚问题的背景是什么和/或您正在尝试做什么
  • 您尚未列出发布前尝试过的内容
  • Google可能会回答您的问题

但本着乐于助人的精神:

我咨询Google以在Java swing Timer上找到此资源:http://supportweb.cs.bham.ac.uk/documentation/java/tutorial/uiswing/misc/timer.html

我不是Java专家,但我建议尝试:

for (int j = 0; j < 0; i++) {
  System.out.println(j);
  timer = new Timer(ONE_SECOND, new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
           //...Whatever you are trying too do (ie. update progress bar)
              if (/* What you are waiting for */) {
                    try {
                        Thread.sleep(1000);
                        } catch (Exception e) {
                     //
                    }
              }
         }    
     });
  }

答案 1 :(得分:2)

您的for循环有两个语法问题

for (int j = 0; j < 0; i++) {

您正在比较j < 0(并且假设j的初始值为0,您的循环将永远不会输入)并且您正在递增i而不是{ {1}}。假设您的循环旨在以一秒的间隔将j打印到0,您可以使用9Timer来执行此操作。从侦听器开始,初始化计数器并保留对ActionListener的本地引用(以便侦听器可以停止计时器)。像

这样的东西
Timer

接下来,我们需要创建一个static class MyListener implements ActionListener { int n = 0; Timer t; public void setTimer(Timer t) { this.t = t; } @Override public void actionPerformed(ActionEvent e) { if (n < 10) { System.out.println(n++); } else { // Stop the Timer t.stop(); } } } ;初始化TimerListener(等待进程完成)。像

这样的东西
start