Невозможно выполнить таймер в [Java]

Я пытался разобраться с основами использования таймера, чтобы я мог создать программу для прыгающего мяча, но я не могу правильно реализовать таймер. Эта программа теоретически должна просто непрерывно печатать дисплей, но вместо этого программа просто завершает работу. Что я могу сделать, чтобы исправить эту проблему и исправить таймер?

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


public class DisplayStuff {

public static void main(String[] args) {


    class TimerListener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            System.out.println("Display me.");
        }
    }

    ActionListener listener = new TimerListener();
    Timer t= new Timer(1000, listener);
    t.start();

}
}

1 ответ

Решение

В вашей программе нет потока событий Swing, с помощью которого можно продолжить таймер. Вам нужно поместить его в визуализированный графический интерфейс Swing, чтобы запустить поток отправки событий Swing, а затем запустить таймер. Это может быть достигнуто с помощью чего-то такого простого, как отображение JOptionPane:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.Timer;
import javax.swing.JFrame;

public class DisplayStuff {

   public static void main(String[] args) {

      class TimerListener implements ActionListener {
         public void actionPerformed(ActionEvent event) {
            System.out.println("Display me.");
         }
      }

      ActionListener listener = new TimerListener();
      Timer t = new Timer(1000, listener);
      t.start();

      // ***** add just this *****
      JOptionPane.showMessageDialog(null, "foo");

   }
}
Другие вопросы по тегам