我学习了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.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秒内没有执行,而是从不执行???
答案 0 :(得分:1)
在程序结束时尝试Thread.sleep(10000);
。我认为程序在计时器启动之前就已退出......
答案 1 :(得分:1)
Swing Timer需要Swing应用程序来激活计时器。将计时器代码本身移动到类的实例方法中并添加it to a JFrame。
答案 2 :(得分:0)
您的计划存在问题
程序在timer.start()之后很快结束(JVM退出);所以你的计时器没有机会运行。 您可以使用Thread.sleep(5000)暂停主线程;启动计时器后不久,让它有机会在主要退出之前运行。
javax.swing.Timer
类只能在Swing应用程序中使用。 javax.swing.Timer
不如java.util.Timer
javax.swing.Timer
比java.util.Timer更合适,因为javax.swing.Timer handles thread sharing
最好使用java.util.Timer
有更多功能,请参阅here