Проблема таймера в 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);
    }
});
Другие вопросы по тегам