Невозможно выполнить таймер в [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");
}
}