如何在for循环中使用swing计时器进行睡眠?
for(int j = 0; j< 0; i ++){ 的System.out.println(J); 尝试{ 了Thread.sleep(1000); } catch(例外e){ // } }
答案 0 :(得分:2)
我认为这个问题正在接受负面投票,因为:
但本着乐于助人的精神:
我咨询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
,您可以使用9
和Timer
来执行此操作。从侦听器开始,初始化计数器并保留对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();
}
}
}
;初始化Timer
和Listener
(等待进程完成)。像
start