Счетчик кликов 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
, Вы должны сделать это, чтобы посчитать клики. (или суммировать их)