2

如何调整此Timer代码以使其执行四次然后停止?

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();
4

2 回答 2

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();
于 2013-04-29T13:54:54.097 回答
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();
            }
        });
    }

}
于 2013-04-29T14:09:31.743 回答