Java 计数按钮点击次数
我想计算使用GUI单击按钮的次数 我做了以下代码:Java 计数按钮点击次数,java,swing,jbutton,Java,Swing,Jbutton,我想计算使用GUI单击按钮的次数 我做了以下代码: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int clicked = 0; clicked++; System.out.println(clicked); } 但它显示输出“1”,每次我点击按钮 我希望每次单击按钮时都能显示计数 例如:如
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
int clicked = 0;
clicked++;
System.out.println(clicked);
}
但它显示输出“1”,每次我点击按钮
我希望每次单击按钮时都能显示计数
例如:如果我点击按钮两次,它会给我“2”的输出。您每次点击都会重置计数器,因为您已经在action方法中定义了变量。尽量不要那样做
int clicked = 0; // move this outside
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
// int clicked = 0; -- this resets it to 0 each time
clicked++;
System.out.println(clicked);
}
改变
int clicked = 0;
成为你们班的一员。这样,它就不会在每次按下按钮时都被设置为零。如果您已将
单击
声明为局部变量,并将其初始化为0
,则它只能是1
将单击的改为类级别变量
private int clicked = 0;
//...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
试试下面的代码
int clicked = 0;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
您已经在ActionListener
中声明了count
变量。在街区外申报
int clicked = 0; //make it as your class member.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
根据实例化此类的方式,您需要在字段级别或类变量级别声明单击的变量。当前,单击的变量的范围是该方法的局部范围
选项1
int clicked = 0;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
选项2
static int clicked = 0;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
您使用的选项将取决于实例化。如果可能的话,应该避免使用第二个选项。每次启动jButton1ActionPerformed
时,单击的变量会被实例化回0,这就是为什么它总是给您一个值1。您应该将单击的变量移到该方法之外
//Somewhere in your class
private intClicked = 0;
//More methods here.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
clicked++;
System.out.println(clicked);
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.border.EmptyBorder;
导入javax.swing.JTextField;
导入javax.swing.JButton;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
公共类线程扩展了JFrame{
私有JPanel内容窗格;
私有JTextField-DisplayOne;
私有JTextField显示两个;
整数计数;
int count1;
int count2;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐
{
试一试{
螺纹框架=新螺纹();
frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建框架。
*/
公共线程()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100450300);
contentPane=newjpanel();
setboorder(新的EmptyBorder(5,5,5,5));
setLayout(新的BorderLayout(0,0));
setContentPane(contentPane);
JPanel面板=新的JPanel();
contentPane.add(面板,BorderLayout.CENTER);
DisplayOne=新的JTextField();
panel.add(DisplayOne);
DisplayOne.setColumns(10);
DisplayTwo=新的JTextField();
panel.add(显示二);
显示两个。设置列(10);
JButton btncontone=新JButton(“计数1”);
count1=0;
btnCountOne.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0)
{
DisplayOne.setText(Integer.toString(count1++));
}
});
面板。添加(BTNContone);
JButton btnCountTwo=新JButton(“计数2”);
count2=0;
btncount2.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0)
{
displaytoo.setText(Integer.toString(count2++));
}
});
面板。添加(BTN第二组);
JButton btnCountBoth=新JButton(“同时计数”);
计数=0;
添加ActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0)
{
同时(计数<10)
{
DisplayOne.setText(Integer.toString(++count));
displaytoo.setText(Integer.toString(count));
}
}
});
面板。添加(BTN计算两者);
}
}
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Threading extends JFrame {
private JPanel contentPane;
private JTextField DisplayOne;
private JTextField DisplayTwo;
int count;
int count1;
int count2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run()
{
try {
Threading frame = new Threading();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Threading()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
DisplayOne = new JTextField();
panel.add(DisplayOne);
DisplayOne.setColumns(10);
DisplayTwo = new JTextField();
panel.add(DisplayTwo);
DisplayTwo.setColumns(10);
JButton btnCountOne = new JButton("Count 1");
count1=0;
btnCountOne.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
DisplayOne.setText(Integer.toString(count1++));
}
});
panel.add(btnCountOne);
JButton btnCountTwo = new JButton("Count 2");
count2=0;
btnCountTwo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
DisplayTwo.setText(Integer.toString(count2++));
}
});
panel.add(btnCountTwo);
JButton btnCountBoth = new JButton("Count Both");
count=0;
btnCountBoth.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
while (count < 10)
{
DisplayOne.setText(Integer.toString(++count));
DisplayTwo.setText(Integer.toString(count));
}
}
});
panel.add(btnCountBoth);
}
}