mut*_*ard 1 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
}
}
Run Code Online (Sandbox Code Playgroud)
e.getClickCount()用于提供有关"点击"的详细信息.它可以帮助应用程序响应双重,跳闸和等效点击.因此,当用户停止点击时,它会再次重置.
更换
clicks = e.getClickCount();
Run Code Online (Sandbox Code Playgroud)
同
// *Add* the number of clicks that occurred to the click variable
clicks += e.getClickCount();
Run Code Online (Sandbox Code Playgroud)
而你的柜台不再重置了.
注意:clicks在这种情况下不需要静态.