Таймер класс не работает

1

Я узнаю о классе 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
    Вам нужна рамка для программы.
  • 0
    Не совсем, но, конечно, расширение JPanel предполагает, что он хочет получить некоторые графические элементы (в конце концов).
Показать ещё 2 комментария
Теги:
timer
debugging

3 ответа

1

Для таймера Swing Timer требуется приложение Swing для активации таймера. Переместите сам код таймера в метод экземпляра класса и добавьте его в JFrame.

1

Попробуйте Thread.sleep(10000); в конце вашей программы. Я думаю, что программа выходит до того, как таймер может стрелять......

  • 0
    Предпочтительно Thread.sleep(10000); если у него есть 5 секундная задержка на таймере.
  • 0
    Спасибо, я не выходил из собственного метода сна достаточно давно, очевидно. Исправление сделано.
0

Проблема с вашей программой

Программа заканчивается (выходы JVM) вскоре после timer.start(); поэтому вашему таймеру не дают шансов на запуск. Вы можете приостановить основной поток с помощью Thread.sleep(5000); вскоре после запуска таймера, чтобы дать ему возможность запускать до основных выходов.

  • Класс javax.swing.Timer может использоваться только в приложениях Swing.
  • javax.swing.Timer не такой мощный, как java.util.Timer
  • javax.swing.Timer - более подходящий выбор по сравнению с java.util.Timer для приложений Swing, потому что javax.swing.Timer handles thread sharing
  • Вам необходимо реализовать интерфейс java.awt.event.ActionListener и написать код своей задачи в методе actionPerformed

Его лучше использовать java.util.Timer имеет больше возможностей, см. Здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню