Java 计时器类不工作
我正在学习定时器课程Java 计时器类不工作,java,debugging,timer,Java,Debugging,Timer,我正在学习定时器课程 package testing; import java.io.*; import java.security.*; import javax.xml.bind.DatatypeConverter; import java.lang.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.im
package testing;
import java.io.*;
import java.security.*;
import javax.xml.bind.DatatypeConverter;
import java.lang.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Testing extends JPanel
{
public static void main(String[] args)
{
Timer timer = new Timer(5000, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
// Output function
System.out.println("HowareYou"); // function to be run after 5 seconds
}
});
timer.setRepeats(false); // Only execute once
timer.start(); // Go go go!
}
}
为什么输出函数在程序启动5秒后不执行,而从不执行???试试线程睡眠(10000)程式码>在程式结束时。我认为程序在计时器启动之前就已经退出了……一个Swing计时器需要一个Swing应用程序来激活计时器。将计时器代码本身移动到类的实例方法中并添加。程序的问题是 程序在timer.start()之后不久结束(JVM退出);所以你的计时器没有机会运行。 您可以使用thread.sleep(5000)暂停主线程;启动计时器后不久,让它有机会在主要出口前运行
类只能在swing应用程序中使用李>javax.swing.Timer
不如javax.swing.Timer
java.util.Timer
- 对于swing应用程序,
是比java.util.Timer更合适的选择,因为javax.swing.Timer
javax.swing.Timer处理线程共享
- 您需要实现java.awt.event.ActionListener接口,并在其actionPerformed方法中编写任务代码
最好使用
java.util.Timer
有更多的功能请参见您需要一个程序框架。不是真的,但当然扩展JPanel会建议他(最终)需要一些图形元素。对于Swing Timer,是的,您需要一个。好的,我没有注意它是java.util.Timer还是swing Timer代码>如果他在计时器上有5秒的延迟。谢谢,很明显,我很久以前没有退出我自己的睡眠方法。更正。