Счетчик кликов Java сбрасывается каждый раз, когда я прекращаю кликать

Я хотел сделать очень простой счетчик кликов в Java. Это работает, но каждый раз, когда я перестаю нажимать кнопку Click Me, количество кликов сбрасывается. Я попытался решить эту проблему с помощью статической переменной, называемой клики. Я знаю, что это может звучать как глупый вопрос, но как вы на самом деле препятствуете перезагрузке переменной.

вот код, который я написал.

    package clickcounter;

import java.awt.BorderLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class ClickCounter extends JFrame implements MouseListener{
    private JButton b1 = new JButton("Click me");
    private static int clicks;
    private JLabel info = new JLabel();

    public ClickCounter()
    {
        super("Click counter");
        setSize(250, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        b1.addMouseListener(this);
        BorderLayout bor = new BorderLayout();
        setLayout(bor);
        info.setEnabled(false);
        add(BorderLayout.NORTH, b1);
        add(BorderLayout.CENTER, info);
        setVisible(true);
    }


    public static void main(String[] args) {
        ClickCounter cc = new ClickCounter();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        clicks = e.getClickCount();
        info.setText("Number of clicks " + clicks);
        info.repaint();
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // ignore
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        //ignore
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // ignore
    }

    @Override
    public void mouseExited(MouseEvent e) {
       // ignore
    }

}

3 ответа

Решение

e.getClickCount() используется для предоставления подробной информации о клике. Это помогает приложениям реагировать на двойные, отключенные и т. Д. Клики. Поэтому, когда пользователь перестает нажимать, он снова сбрасывается.

замещать

clicks = e.getClickCount();

с

// *Add* the number of clicks that occurred to the click variable
clicks += e.getClickCount();

И ваш счетчик больше не сбрасывается.

Примечание: изготовление clicks статический не требуется в этой ситуации.

Ты должен написать

clicks += e.getClickCount();

вместо

clicks = e.getClickCount();

и инициализирует клики с

private static int clicks = 0;

это все.

Вы не увеличиваете clicks, Вы должны сделать это, чтобы посчитать клики. (или суммировать их)

Другие вопросы по тегам