如何计算从 10 x 10 java JButton 网格中单击了多少个 JButton
How to count how many JButtons have been clicked from a 10 x 10 java JButton grid
我想计算从 10 x 10 JButton 网格中单击的 JButton 的数量。
这就是我要说的
总之,我不知道如何统计点击了多少个JButton。我考虑过制作 100 个 JButton,但这似乎很愚蠢。
另外,如何防止点击超过 14 个按钮?
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
button.setEnabled( false );
}
};
for(int row = 0; row < 10; row++)
{
for(int col = 0; col < 10; col++)
{
button = new JButton();
button.addActionListener( al );
panel_1.add(button);
}
}
这是我的 forLoops,用于制作 100 个按钮并为每个按钮提供一个 actionListener,因此当单击 JButton 时,它会变得不可单击。
ActionListener al = new ActionListener()
{
int clicked = 0;
public void actionPerformed(ActionEvent e)
{
button = (JButton)e.getSource();
if(clicked != 14)
{
clicked++;
}
else
button = (JButton)e.getSource();
button.setEnabled( false );
}
};
for(int row = 0; row < 10; row++)
{
for(int col = 0; col < 10; col++)
{
button = new JButton();
button.addActionListener( al );
panel_1.add(button);
}
}
我试过放入计数器,但显然不正确。我什至可以将 e.getSource() 与 int 或其他东西进行比较吗?
如果你想计算点击次数,你需要创建一个 int(或 long)变量来存储它们,只需在 actionPerformed
方法中添加一个 ++
语句:
private int buttonClicks = 0; // Or public
public void actionPerformed(ActionEvent e)
{
if(buttonClicks == 14){
System.exit(0); // Or a different script
}else{
JButton button = (JButton)e.getSource();
button.setEnabled( false );
buttonClicks++; // Record click
}
}
如果您想计算特定按钮的点击次数,您需要创建一个字符串数组,其中包含在构造函数中找到的所有按钮名称:
JButton jbtn = new JButton("Button") // Button is the name
和一个单独的 int
数组,用于存储点击次数。然后你可以使用 for
循环来找出哪个按钮被按下,并增加它在 int 数组中的点击次数。
考虑以下示例:
aClass(){
JFrame jfrm = new JFrame("Example");
jfrm.setSize(200, 200);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setLayout(new FlowLayout());
jfrm.setLocationRelativeTo(null);
JButton jbtn1 = new JButton("Push");
JButton jbtn2 = new JButton("Click");
JButton jbtn3 = new JButton("Press");
jbtn1.addActionListener(this);
jbtn2.addActionListener(this);
jbtn3.addActionListener(this);
jfrm.add(jbtn1);
jfrm.add(jbtn2);
jfrm.add(jbtn3);
}
public static String[] buttonNames = {"Push", "Click", "Press"}; // Put button names in an array
public static int[] buttonClicks = {0, 0, 0}; // Set the clicks to default
public void actionPerformed(ActionEvent ae)
{
for(int i = 0; i < buttons.length; i++){
if(ae.getActionCommand().equals(buttonNames[i])){
buttonClicks[i] = buttonClicks[i] + 1; // Record the clicks. I think you can use buttonClicks[i]++, but I'm not sure
}
}
}
任何时候您需要访问特定按钮的点击次数,您都可以使用如下内容:
public static int getClicks(String buttonName){
for(int i = 0; i < aClass.buttonNames.length; i++){
if(buttonName.equals(aClass.buttonNames[i])){
return aClass.buttonClicks[i];
}
}
}
当您调用该方法时,您所要做的就是将按钮名称作为字符串传递给它。
getClicks("Push");
我想计算从 10 x 10 JButton 网格中单击的 JButton 的数量。
这就是我要说的
总之,我不知道如何统计点击了多少个JButton。我考虑过制作 100 个 JButton,但这似乎很愚蠢。
另外,如何防止点击超过 14 个按钮?
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
button.setEnabled( false );
}
};
for(int row = 0; row < 10; row++)
{
for(int col = 0; col < 10; col++)
{
button = new JButton();
button.addActionListener( al );
panel_1.add(button);
}
}
这是我的 forLoops,用于制作 100 个按钮并为每个按钮提供一个 actionListener,因此当单击 JButton 时,它会变得不可单击。
ActionListener al = new ActionListener()
{
int clicked = 0;
public void actionPerformed(ActionEvent e)
{
button = (JButton)e.getSource();
if(clicked != 14)
{
clicked++;
}
else
button = (JButton)e.getSource();
button.setEnabled( false );
}
};
for(int row = 0; row < 10; row++)
{
for(int col = 0; col < 10; col++)
{
button = new JButton();
button.addActionListener( al );
panel_1.add(button);
}
}
我试过放入计数器,但显然不正确。我什至可以将 e.getSource() 与 int 或其他东西进行比较吗?
如果你想计算点击次数,你需要创建一个 int(或 long)变量来存储它们,只需在 actionPerformed
方法中添加一个 ++
语句:
private int buttonClicks = 0; // Or public
public void actionPerformed(ActionEvent e)
{
if(buttonClicks == 14){
System.exit(0); // Or a different script
}else{
JButton button = (JButton)e.getSource();
button.setEnabled( false );
buttonClicks++; // Record click
}
}
如果您想计算特定按钮的点击次数,您需要创建一个字符串数组,其中包含在构造函数中找到的所有按钮名称:
JButton jbtn = new JButton("Button") // Button is the name
和一个单独的 int
数组,用于存储点击次数。然后你可以使用 for
循环来找出哪个按钮被按下,并增加它在 int 数组中的点击次数。
考虑以下示例:
aClass(){
JFrame jfrm = new JFrame("Example");
jfrm.setSize(200, 200);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setLayout(new FlowLayout());
jfrm.setLocationRelativeTo(null);
JButton jbtn1 = new JButton("Push");
JButton jbtn2 = new JButton("Click");
JButton jbtn3 = new JButton("Press");
jbtn1.addActionListener(this);
jbtn2.addActionListener(this);
jbtn3.addActionListener(this);
jfrm.add(jbtn1);
jfrm.add(jbtn2);
jfrm.add(jbtn3);
}
public static String[] buttonNames = {"Push", "Click", "Press"}; // Put button names in an array
public static int[] buttonClicks = {0, 0, 0}; // Set the clicks to default
public void actionPerformed(ActionEvent ae)
{
for(int i = 0; i < buttons.length; i++){
if(ae.getActionCommand().equals(buttonNames[i])){
buttonClicks[i] = buttonClicks[i] + 1; // Record the clicks. I think you can use buttonClicks[i]++, but I'm not sure
}
}
}
任何时候您需要访问特定按钮的点击次数,您都可以使用如下内容:
public static int getClicks(String buttonName){
for(int i = 0; i < aClass.buttonNames.length; i++){
if(buttonName.equals(aClass.buttonNames[i])){
return aClass.buttonClicks[i];
}
}
}
当您调用该方法时,您所要做的就是将按钮名称作为字符串传递给它。
getClicks("Push");