如何使用Swing计时器

时间:2014-11-03 01:43:59

标签: java swing timer jbutton

我正在尝试使用Swing Timer停止程序。

Timer timer = new Timer(10000,
   new ActionListener(public void actionPerformed(ActionEvent e) {}));

无效

public class Card extends JButton implements ActionListener {

    int numberClick = 0;

    public card() {
        addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        numberClick++;

        if(numberClick == 2) {
            Timer timer = new Timer(10000, );
            timer.start();
            numberClick = 0;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您似乎对Timer的工作方式缺乏基本的了解。请阅读How to Use Swing Timers。这个概念相当简单。

Timer构造函数中的第一个参数是delay。好像你有那个部分了。第二个参数是ActionListener,它监听"计时器事件" (实际上是ActionEvents)。每个延迟时间都会触发一个事件。回调(actionPerformed)包含在该延迟(tick)之后应该执行的操作。所以无论你想要在那一秒之后发生什么,都要把它放在计时器的actionPerformed ActionListener

此外,如果您只想发生一次,则应致电timer.setRepeats(false);。另请注意,您使用的是10000,以毫秒为单位,因此它是10秒,而不是1.您应该将其更改为1000

示例流程

JButton button = new JButton("Press Me");
button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {

        Timer timer = new Timer(1000, new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Print after one second");
            }
        });
        timer.setRepeats(false);
        timer.start();
    }
});
  

按按钮→等待一秒→打印声明