簡體   English   中英

Java計時器不會運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM