Java:计算按钮的点击次数

时间:2015-09-08 13:10:50

标签: java button

我正在尝试做类似cookie点击器的事情,但它不起作用。我还没设法创建一个显示点击量的“计数器”。这是我迄今为止所有的想法吗?

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Stocks implements ActionListener {

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

}

public void createGui() {
    JFrame frame = new JFrame("Clicker");
    frame.setSize(175, 200);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel(new GridBagLayout());
    frame.add(panel);
    frame.getContentPane().add(panel, BorderLayout.WEST);
    GridBagConstraints c = new GridBagConstraints();

    JButton button1 = new JButton("Click this");
    c.gridx = 0;
    c.gridy = 0;
    c.insets = new Insets(40, 40, 40, 40);
    panel.add(button1, c);
    button1.addActionListener(this);

}

4 个答案:

答案 0 :(得分:1)

您可以在Stocks课程中设置变量int cnt = 0;,每当有人点击按钮时,cnt方法中的actionPerformed增加{。}}。

答案 1 :(得分:0)

您应首先添加一个计数器作为您的类`Stock``

的属性
public class Stocks {
    private int counter;

用0:

初始化计数器变量
public static void main(String[] args) {
    this.counter = 0;

然后添加动作侦听器以增加变量:

button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                counter++;
            }
        });

答案 2 :(得分:0)

正如您所说,您的actionPerformed方法为空,这意味着您在单击按钮时将应用程序编码为什么都不做。

这个答案假设你只有一个组件使用该类作为ActionListener:

在早期版本的Java中,它将是:

@Override
public void actionPerformed(ActionEvent e) {
        counter++;
}
然而,Java 8为我们提供了Lambda表达式,并且允许它更容易(使用更少的代码)。

button1.addActionListener(event -> counter++);

您不需要创建ActionListener的实现,Java会为您解决此问题。如果您编写这样的代码,如果您有更多的组件使用该类作为ActionListener,则更容易,因为您无法将它们混合起来。

如果您需要它们来调用代码的共享部分,您仍然可以在Lambda表达式中调用方法

button1.addActionListener(event -> {callSharedMethod(); counter++;});

在此示例中,首先将调用共享方法。之后,计数器将被增强,这将/可能只能通过单击此按钮来完成。

答案 3 :(得分:0)

我很惊讶没有人建议通过继承来解决这个问题。您想要的按钮 JButton,但略微更专业(它必须计算自身执行的点击次数)。

public final class CountButton extends JButton {

    private int counter = 0;

    public CountButton(String text) {
        super(text);
        addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                counter++;
            }
        });
    }

    public final int getCounter() {
        return counter;
    }
}