2013-04-29 2 views
1

Как я могу настроить этот код Timer так, чтобы он выполнялся четыре раза, а затем останавливался?Сделать таймер качания выполнить N раз?

timer = new Timer(1250, new java.awt.event.ActionListener() { 
    @Override 
    public void actionPerformed(java.awt.event.ActionEvent e) { 
     System.out.println("Say hello"); 
    } 
}); 
timer.start(); 
+0

вы можете быть немного более конкретно о том, что вы пытаетесь сделать ? подробнее расскажите о времени таймера. –

+0

Вы хотите сказать, что хотите, чтобы ваш «ActionListener» выполнялся 4 раза, а затем остановился? –

+0

Guillaume Polet: ДА, – JaLe29

ответ

3

Вы можете сделать:

Timer timercasovac = new Timer(1250, new ActionListener() { 
    private int counter; 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("Say hello"); 
     counter++; 
     if (counter == 4) { 
      ((Timer)e.getSource()).stop(); 
     } 
    } 
}); 
timercasovac.start(); 
+0

Thx, почему 1000 задержек? – JaLe29

+0

Я хочу, чтобы таймер отправился всего 4 раза. – JaLe29

2

Вы должны считать себя, а затем остановить Timer вручную:

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

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.SwingUtilities; 
import javax.swing.Timer; 

public class TestTimer { 

    private int count = 0; 
    private Timer timer; 
    private JLabel label; 

    private void initUI() { 
     JFrame frame = new JFrame("test"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     label = new JLabel(String.valueOf(count)); 
     frame.add(label); 
     frame.pack(); 
     frame.setVisible(true); 
     timer = new Timer(1250, new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (count < 4) { 
        count++; 
        label.setText(String.valueOf(count)); 
       } else { 
        timer.stop(); 
       } 
      } 
     }); 
     timer.start(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new TestTimer().initUI(); 
      } 
     }); 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^