java 监听 循环_java循环按键循环监听事件

展开全部

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Arrays;

import java.util.HashMap;

import java.util.Map;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class Buttoncall implements ActionListener {

private String[] a = {"1a", "2a", "3a", "4a", "5a" };

private JButton[] jbutton = new JButton[5];

private JLabel[] jlabel = new JLabel[jbutton.length];

//用于记录按钮的点击数

private Map<String, Integer> countMap = new HashMap<String, Integer>();

/**

* 创建一个新的实例 Buttoncall.

*/

public Buttoncall() {

// 创建窗口

JFrame j = new JFrame();

JPanel jpa = new JPanel();// 定义面板组建

/**

* 初始化按钮,及其点62616964757a686964616fe59b9ee7ad9431333332613733击次数(默认0)

*/

for (int i = 0; i < jbutton.length; i++) {

jbutton[i] = new JButton(a[i]);// 定义按钮组建

jpa.add(jbutton[i]);// 将按钮添加到面板之中

jlabel[i] = new JLabel("您已点击" + a[i] + "的次数是:0");

jpa.add(jlabel[i]);

jbutton[i].addActionListener(this);

}

j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

j.add(jpa);

j.setTitle("测试使用");

j.setVisible(true);

j.setSize(400, 500);

}

/**

* 单击事件处理.

* <p>Title: actionPerformed</p>

* <p>Description: </p>

* @param actionevent

* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)

*/

@Override

public void actionPerformed(ActionEvent actionevent) {

//获取单击事件组件 名称 如1a

String buttonName = actionevent.getActionCommand();

//在数组中的位置

int index = Arrays.asList(a).indexOf(buttonName);

if (index != -1) {

int count = 1;

//判断map中是否存在当前按钮

if (countMap.containsKey(buttonName)) {

count = countMap.get(buttonName);

count += 1;

}

//记录当前按钮点击次数

countMap.put(buttonName, count);

jlabel[index].setText("您已点击" + buttonName + "的次数是:" + count);

if (count % 10 == 0) {

JOptionPane.showMessageDialog(null, count + "是10的倍数,所以我来提示你!");

}

}

}

public static void main(String[] args) {

new Buttoncall();

}

}

你的这种写法不对,逻辑有问题!

匿名内部类调用的全局变量 i

所以每次点击的时候i的值都等于5,这时候就会数组越界!我给你写了个例子,你参考下!

有问题再追问,good luck!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值