[英]Java timer wont run
所以我想每秒打印一個單詞10秒,但沒有任何工作這是我的代碼:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class Main{
public static void main (String[] args){
class TimerListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("helo");
}
}
ActionListener dummy = new TimerListener();
Timer power_up_time = new Timer(10000,dummy);
power_up_time.addActionListener(dummy);
power_up_time.start();
}
}
編輯:所以我添加了啟動功能,它仍然無法正常工作
我相信你需要start
一個Timer
才能使它工作。
像這樣的東西:
Timer timer = new Timer(500, new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
timer.start();
在較新版本的Java中(從過去十年左右)我建議使用ScehduledExecutorService
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(() -> System.out.println("hello"), 0, 1, TimeUnit.SECONDS);
TimeUnit.SECONDS.sleep(10);
ses.shutdown();
如果您發布的代碼已完成,則在應用程序(即主線程)終止之前啟動計時器。 因此,調度程序將不會運行足夠長的時間來執行計時器。
嘗試在一個具有退出條件的循環中休眠或運行(這可能是你想要做的事情)。
您沒有初始化並啟動Swing工具包,因此您的應用程序會立即終止。
如果你真的想使用Swing Timer
,你需要至少顯示一些窗口或對話框,以便Swing事件線程正在運行,例如通過在main()
方法的末尾添加以下內容:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JFrame("Frame title").setVisible(true);
}
});
查看Swing以外的其他選擇的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.