java - 如何使用 Swing 计时器

标签 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;
        }
    }
}

最佳答案

您似乎对计时器的工作原理缺乏基本了解。请阅读How to Use Swing Timers 。这个概念相当简单。

Timer 构造函数中的第一个参数是延迟。看来你已经把那部分放下了。第二个参数是用于监听“计时器事件”(实际上是 ActionEvents)的 ActionListener。每次延迟时间都会触发一个事件。回调 (actionPerformed) 包含在延迟(勾选)之后应执行的操作。因此,无论您希望在那一秒之后发生什么,请将其放入计时器的 ActionListeneractionPerformed 中。

此外,如果您只希望它发生一次,您应该调用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();
    }
});

Press Button → Wait One Second → Print Statement

关于java - 如何使用 Swing 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706639/

相关文章:

java - 如何使方法返回面板?

java - 将CURE聚类算法加入WEKA

java - JTree Nimbus Selectionbackground 不适用于 Java 1.8

c# - 在定时器的回调方法中抛出异常

java - 刷新 slider 中的 fragment

java - 将非插件项目引用到 Eclipse 插件项目

java apache poi(第 3 部分)

java - Swing 中的 GridBagLayout 格式设置

python - 哪些数据类型有助于 python 中的计时器行为流

javascript - countUp() 和 countUp 之间的区别