Функция таймера не выполняется - PullRequest
1 голос
/ 06 января 2020

Мне нужно установить таймер, который будет печататься через определенное время в al oop. Как мне этого добиться?

Следующий код останавливается и не запускается.

Я использовал функцию таймера, чтобы сохранить его в al oop, но он не выполняется.

public static void main(String[] args) throws Exception {
    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            System.out.println("The document is available");
        }
    };

    Timer timer = new Timer(1000, taskPerformer);
    timer.setRepeats(true);
    timer.start();
}

1 Ответ

1 голос
/ 06 января 2020

Вам необходимо временно открыть кадр, чтобы запустить EDT (поток диспетчеризации событий). Примерно так:

public static void main(String [] args) throws Exception{
    ActionListener taskPerformer = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
            System.out.println("The document is available");
        }
    };
    Timer timer = new Timer(1000 ,taskPerformer);
    timer.setRepeats(true);
    timer.start();

    JFrame frm = new JFrame();
    frm.setVisible(true);
    frm.setVisible(false);
}

Другой вариант:

public static void main(String [] args) throws Exception{
    ActionListener taskPerformer = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
            System.out.println("The document is available");
        }
    };
    Timer timer = new Timer(1000 ,taskPerformer);
    timer.setRepeats(true);
    SwingUtilities.invokeLater(timer::start);
}

В этом случае вы получите бесконечный l oop, который печатает, что документ доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...