Проблема таймера в Java - время не останавливается, когда setRepeat(false) установлен
Я надеюсь, что кто-то может помочь мне решить эту проблему, связанную с таймерами. Когда timer.start() запущен, таймер запускается. однако, это, кажется, повторяется бесконечно.
Мне просто нужно таймер, чтобы выполнить один раз. Как я могу добиться этого, если timer.setRepeats(false) не работает?
ActionListener updatePane = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
msgPaneDoc.insertString(msgPaneDoc.getLength(), "CLICK",
msgPaneDoc.getStyle("bold_style"));
} catch (BadLocationException ex) {
}}};
Timer timer = new Timer(3000,updatePane);
timer.start();
timer.setRepeats(false);
1 ответ
Вы вызвали его из нити рассылки событий.
Попробуйте использовать SwingUtilities.invokeLater() или EventQueue.invokeLater()
Образец кода:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.out.println("Hello");
}
};
Timer timer = new Timer(1000, actionListener);
timer.start();
timer.setRepeats(false);
}
});