我在timer
课程中使用,在编写的文档中我应该导入javax.swing.Timer
来使用它。这是否意味着我无法在普通的java文件中使用它?因为我尝试了下面的代码,它什么也没显示:
static ActionListener timeStampListener = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("action listener");
for (int i = 1; i <= logfile.getTotalLines(); i++) {
System.out.println("Engine Time(ms): " +
logfile.getFileHash().get(i).getTimeStampInSec());
}
}
};
Timer t = new Timer(2, timeStampListener);
t.setRepeats(true);
t.start();
答案 0 :(得分:1)
问题是你的主线程存在于启动计时器线程之前。因为你的应用程序是非gui使用util.Timer
而不是Swing.Timer
..如果你想使用swing计时器来处理这段代码然后添加一个swing组件.add new jframe()
并看到它正在工作..你不需要swing.timer使用util timer。
static ActionListener timeStampListener1 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("hi");
}
};
public static void main(String[] args) {
new JFrame(); //add this line
Timer t = new Timer(2, timeStampListener1);
t.setRepeats(true);
t.start();
}
或者通过将thread.sleep
添加到计时器以及看到它正在工作
Timer t = new Timer(2, timeStampListener1);
t.setRepeats(true);
t.start();
Thread.sleep(1000);
<小时/> 这就是你如何使用util计时器来实现这个
进口
import java.util.Timer;
import java.util.TimerTask;
码
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("action listener");
for (int i = 1; i <= logfile.getTotalLines(); i++) {
System.out.println("Engine Time(ms): "
+ logfile.getFileHash().get(i).getTimeStampInSec());
}
}
}, 500, 2);
}
答案 1 :(得分:0)
不,这意味着您应该导入您将使用的Timer类。导入javax.swing.Timer时,在javax.swing包中指定Timer类。您可以在java文件中使用它。
无论如何,您是否尝试过在timeStampListener中不使用static关键字?