Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing计时器自动停止运行_Java_Swing_Timer - Fatal编程技术网

Java Swing计时器自动停止运行

Java Swing计时器自动停止运行,java,swing,timer,Java,Swing,Timer,我正在尝试实现一个永远运行的Swing计时器(或者直到它被告知停止)。我不知道为什么,但下面的代码将执行大约8秒,然后自行停止 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; public class SwingTimer { private int count; public SwingTimer() { count = 0;

我正在尝试实现一个永远运行的Swing计时器(或者直到它被告知停止)。我不知道为什么,但下面的代码将执行大约8秒,然后自行停止

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

public class SwingTimer {

private int count;

public SwingTimer() {
   count = 0;
   final int delay = 1000;
   ActionListener l = new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
         System.out.println("Count: " + (++count));
      }
   };

   new Timer(delay,l).start();

   try {
      Thread.sleep(2000);
   } catch(InterruptedException e) {
      System.out.println(e);
   }
}


    public static void main(String[] args) {
       new SwingTimer();

    }
}
然而,在我下载的一个示例中,代码与上面的代码几乎完全相同,只是延迟是500毫秒,而不是1000毫秒,并且计时器将运行似乎不确定的时间。在该示例中,当我将500更改为1000时,它的执行方式与上面的代码相同


有人知道为什么会发生这种情况,以及如何修复它以使其无限期运行吗?

在Windows 7上使用JDK7对我来说工作正常。当所有不是守护进程线程的线程终止时,JVM将关闭。也许因为你的操作系统上没有GUI,你就没有任何非守护进程线程在运行?查看Windows.dispose()API并按照“AWT线程问题”上的链接了解更多信息。在Windows 7上使用JDK6对我来说也很好。在这里,当线程在2000毫秒后唤醒时,程序终止。如果删除Thread.sleep(2000),程序将不会执行任何操作。@camickr我还在Windows 7上使用JDK 7_u51。我试着把它放在一个GUI中,现在它似乎工作得很好,很有趣。。。谢谢你的意见。