Swing - 计时器未在触发时触发事件

时间:2017-11-19 11:00:40

标签: java swing events timer actionlistener

我正在制作一个程序,暂时只需每半秒打印一次Printing...。这是我的代码:

package mainPackage;

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

public class Ticker {

    public static void tick() {
        System.out.println("Printing...");
    }

    public static void main(String args[]) {

        ActionListener timerListener = new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) 
            {
                tick();
            }
        };

        Timer mainTimer = new Timer(500,timerListener);
        mainTimer.start();
    }
}

根据我的理解,mainTimer对象应该每隔500毫秒触发由timerListener处理的事件。当我执行此代码时没有任何反应,我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

在挥杆event dispatch thread下使用挥杆计时器:

val isWifiConnection =
    (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager)
                       .activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI

如果您不打算从计时器更改GUI,请考虑使用java.util.Timer