Java Swing:在特定的时间窗口内限制ActionListener调用



我正在尝试制作一个CPS(每秒点击)GUI,顾名思义,通过将5秒内的点击次数除以5来计算您的点击/秒。但是,在运行程序时,我不希望计时器在窗口打开时立即启动。相反,我希望计时器开始一旦第一次点击。我只希望能够点击,而计时器仍在继续。当计时器达到0时,按钮应该消失。如果有人能告诉我如何使用计时器,那就太好了。如果你觉得我在试图让你为我做这件事,我很抱歉。我还在努力学习GUI的基础知识)。

下面的代码来自YouTube的框架教程:此外,如果你需要了解所涉及的机制,请查看这个链接(cpstest.org)。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CPS_Test implements ActionListener {
private int count = 0;
private JFrame frame;
private JPanel panel;
private JButton button;
private JLabel label;
private Timer timer;
public CPS_Test() {
frame = new JFrame();
button = new JButton("How fast can you click?");
button.addActionListener(this);
label = new JLabel("Number of clicks: 0");

panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
panel.setLayout(new GridLayout(0, 1));
panel.add(button);
panel.add(label);
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("CPS Test");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new GUI_Basic();
}
@Override
public void actionPerformed(ActionEvent e) {
count++;
label.setText("Number of clicks: " + count);
}
}

如果有人能告诉我如何使用计时器,那就太好了。

参见:用Swing Timer更新Label作为一个基本的例子。

我想计时器开始一旦第一次点击。

  1. 在类的构造函数中创建Timer
  2. 在按钮的ActionListener中,您使用定时器的isRunning()方法。如果未运行,则启动Timer
  3. 当定时器触发时,a)停止定时器,b)使but按钮不可见

相关内容

  • 没有找到相关文章

最新更新