Timer对象的Actionlistener不显示任何内容

时间:2014-12-03 15:13:07

标签: java timer

我在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();

2 个答案:

答案 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关键字?