每次停止点击时,Java点击计数器都会重置

时间:2013-01-03 11:55:37

标签: java swing mouseevent jbutton click-counting

我想在Java中创建一个非常简单的点击计数器。它有效,但每当我停止点击Click Me按钮时,点击次数就会重置。我尝试使用名为clicks的静态变量来解决这个问题。我知道这可能听起来像一个愚蠢的问题,但你如何防止变量重置自己。

这是我写的代码。

    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 个答案:

答案 0 :(得分:6)

e.getClickCount()用于提供有关“点击”的详细信息。它可以帮助应用程序响应双重,跳闸和等效点击。因此,当用户停止点击时,它会再次重置。

替换

clicks = e.getClickCount();

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

你的柜台不再重置了。

注意:在这种情况下,不需要clicks静态。

答案 1 :(得分:4)

你应该写

clicks += e.getClickCount();

而不是

clicks = e.getClickCount();

并使用

初始化
private static int clicks = 0;

这就是全部。

答案 2 :(得分:2)

您没有递增clicks。你应该这样做,来计算点击次数。 (或总结一下)