Я использую класс timer
, и в документах написано, что я должен импортировать javax.swing.Timer
, чтобы использовать его. значит ли это, что я не могу использовать его в своем обычном java-файле? потому что я попробовал приведенный ниже код, и он ничего не отображает:
static ActionListener timeStampListener = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("action listener");
for (int i = 1; i <= logfile.getTotalLines(); i++) {
System.out.println("Engine Time(ms): " +
logfile.getFileHash().get(i).getTimeStampInSec());
}
}
};
Timer t = new Timer(2, timeStampListener);
t.setRepeats(true);
t.start();
2 ответа
Проблема в том, что ваш основной поток существует до запуска потока таймера. Поскольку ваше приложение не является графическим интерфейсом, используйте util.Timer
вместо Swing.Timer
.. если вы хотите работать с этим кодом, используя таймер качания, добавьте компонент качания. добавьте new jframe()
и посмотрите, как он работает. Вам не нужен свинг. Таймер, используйте таймер утилиты.
static ActionListener timeStampListener1 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("hi");
}
};
public static void main(String[] args) {
new JFrame(); //add this line
Timer t = new Timer(2, timeStampListener1);
t.setRepeats(true);
t.start();
}
Или дайте несколько раз, добавив thread.sleep
к таймеру, чтобы включить, и посмотрите, как он работает
Timer t = new Timer(2, timeStampListener1);
t.setRepeats(true);
t.start();
Thread.sleep(1000);
Вот как вы можете использовать таймер для этого
Импорт
import java.util.Timer;
import java.util.TimerTask;
Код
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("action listener");
for (int i = 1; i <= logfile.getTotalLines(); i++) {
System.out.println("Engine Time(ms): "
+ logfile.getFileHash().get(i).getTimeStampInSec());
}
}
}, 500, 2);
}
Нет, это означает, что вы должны импортировать, какой класс Timer вы будете использовать. Когда вы импортируете javax.swing.Timer, вы указываете класс Timer в пакете javax.swing. Вы можете использовать его в своем java-файле.
В любом случае, вы пробовали не использовать статическое ключевое слово с вашим timeStampListener?
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
Thread.sleep(interval)
, мой код работает.JOptionPane
иSystem.exit(0)
в конце кода, чтобы предотвратить закрытие программы. вы также можете использоватьscanner
, чтобы ваша программа ждала. Я думаю, что это легче понять, чем использоватьthread.sleep()
.