【发布时间】:2017-12-28 16:51:52
【问题描述】:
我试图让这个程序每秒在控制台中打印当前时间。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;
import java.util.Date;
public class E10U27 extends JFrame {
public static void main(String[] args){
// Prep the listener to respond
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
Date now = new Date();
System.out.println(now);
}
}
ActionListener listener = new TimerListener();
final int DELAY = 1000;
Timer t = new Timer(DELAY, listener);
t.start();
}
}
但是,它一次打印 50 次(例如 2:52 50 次),依此类推。它确实正确地打勾。如何让它正确运行?我的代码有错误吗?
【问题讨论】:
-
如果没有错误,可能是bluej有问题:/
-
您等了多长时间? 1000 秒几乎是 17 分钟。
-
@FredK OP 抱怨它根本不等待
-
我将延迟更改为 1,它的滴答声正确,但打印出来的每个延迟都像 50 个。
-
您的程序似乎运行良好(至少对于足够短的延迟可以在 Swing 捕捉到没有活动窗口的事实之前赶上)。所以我投票以“不能重新减少”为关闭。
1的值是一毫秒,而不是秒。所以你一定会得到很多。