首页 > 解决方案 > 在 Java 中计算点击次数

问题描述

    introduceButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            int agex = Integer.parseInt(datafield.getText());

            String box[] = {"paws quantity", "tail(cm)","paws qy"};
            ArrayList<Integer> objdata =  new ArrayList<Integer>();

            for(int z = 0; z < 3;){
                introduceButton
                txtvar.setText(box[z]);
                if (introduceButton.getModel().isEnabled() == true){
                    z++;

                }
            }
        }
    });

嘿,伙计们,我尝试逐步计算按下按钮的次数,以便稍后在数组中导航。问题在于,在单击按钮一次后,变量 z 不会仅增加 1,而是在第一次单击后立即达到最大值。我该如何解决?我也尝试使用方法计数器创建一个类,但它的值仍然为 0:

class click{
    int _incr;
    public click(int incr){
        _incr = incr;
    }
    public int count(){
        _incr++;
        return _incr;
    }
}

...

introduceButton.addActionListener(new ActionListener() {
            
    @Override
    public void actionPerformed(ActionEvent actionEvent) {

        int agex = Integer.parseInt(datafield.getText());

        String box[] = {"paws quantity", "tail(cm)","paws qy"};
        ArrayList<Integer> objdata =  new ArrayList<Integer>();
        click clck = new click(0);
        txtvar.setText(Integer.toString(clck._incr));
            /*for(int z = 0; z < 3;){
                txtvar.setText(box[z]);
                if(introduceButton.getModel().isEnabled() == true){
                    z++;

                }
            }*/


        objdata.add(agex);

        dog abstractdog = new dog(agex, agex, agex);

    }
});

标签: javaswingoopsyntax

解决方案


我做了一个示例代码。请看一下:

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

public class CountClick {

    static int clicks = 0;

    public static void main(String[] args) {
        Frame f = new Frame("Button Example");

        Button btn = new Button("Click me");
        btn.setBounds(50, 100, 80, 30);
        f.add(btn);
        // set size, layout and visibility of frame
        f.setSize(400, 400);
        f.setLayout(null);
        f.setVisible(true);

        // add listener
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // increase click int
                clicks++;
                // print clicks
                System.out.println(clicks);
            }
        });
    }
}

请注意,每次按下按钮时都会触发“addActionListener”中的代码。因此,应避免其中不必要的操作。在“addActionListener”方法中也应该小心使用初始化。

编辑:如果你想有一个单独的点击类,你可以看看下面的代码示例:

class Click {

    private int click = 0;

    public void increaseClick() {
        click++;
    }

    public int getClick() {
        return click;
    }

}

public class CountClicks {

    public static void main(String[] args) {
        Frame f = new Frame("Button Example");

        Button btn = new Button("Click me");
        btn.setBounds(50, 100, 80, 30);
        f.add(btn);
        // set size, layout and visibility of frame
        f.setSize(400, 400);
        f.setLayout(null);
        f.setVisible(true);

        Click click = new Click();

        // add listener
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // increase click int
                click.increaseClick();
                // print clicks
                System.out.println(click.getClick());
            }
        });
    }

}

推荐阅读