Java 回转计时器未启动

Java 回转计时器未启动,java,swing,Java,Swing,我正在尝试使用Swing计时器重复打印语句,但该语句无法打印 我犯了什么错误 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; public class SwingTimer implements ActionListener { Timer timer; public stati

我正在尝试使用Swing计时器重复打印语句,但该语句无法打印

我犯了什么错误

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.Timer;

    public class SwingTimer implements ActionListener {

        Timer timer;

        public static void main(String[] args) {
            SwingTimer obj = new SwingTimer();
            obj.create();
        }

        public void create() {
            timer = new Timer(1000, this);
            timer.setInitialDelay(0);
            timer.start();
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Hello using Timer");
        }    
    }

计时器可能以守护进程线程的形式启动:它不会让jvm保持活动状态,也不会让jvm退出。它将计时器事件发布到GUI事件队列,该队列在第一个对话框或框架可见时启动

您必须创建一个JFrame,并使其可见,或者如果根本不需要窗口系统,则使用

以下代码显示了如何使用:


javax.swing.Timer
只能在使用swing应用程序时使用。当前主
线程
正在退出,因为
计时器
使用守护进程
线程
。作为一种解决方法,您可以:

public static void main(String[] args) {

   SwingTimer obj = new SwingTimer();
   obj.create();
   JOptionPane.showMessageDialog(null, "Timer Running - Click OK to end");
}

非UI应用程序的另一种选择是使用

我尝试了你的代码,但打印会随机停止!有时10秒后,有时4秒!是的,你说得对!我尝试在timer.start()之后调用Thread.sleep(50000),结果成功了!我在timer.start()之后也试过了,它也起作用了!长计数=0;对于(长i=0;i<100000000;i++)计数++;最后想想
java.util.Timer
ScheduledExecutorService
会更干净:)我使用了java.util.Timer,它工作得很好!但我想问的是,我不能在非Gui应用程序上使用swing.Timer吗?Gui有事件队列,并且计时器事件发布在Gui事件队列上。有趣的是,如何在同一时间爬行:-)
public static void main(String[] args) {

   SwingTimer obj = new SwingTimer();
   obj.create();
   JOptionPane.showMessageDialog(null, "Timer Running - Click OK to end");
}