java 添加监听事件

红胡子海盗 2013-10-11 10:23:41
正常给一个菜单项添加监听是:jMenuItem1.addActionListener(this);

现在我的程序里有100多个菜单项,这个的话,我就必须一个一个的添加监听:
jMenuItem1.addActionListener(this);
jMenuItem2.addActionListener(this);
jMenuItem3.addActionListener(this);
jMenuItem4.addActionListener(this);
.....
.....
.....

这样,很累,也很占程序代码段,
我想问有什么方法,能一次,就把所有的菜单项全部添加监听?希望高人指点
...全文
781 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
红胡子海盗 2014-03-20
  • 打赏
  • 举报
回复
自己找到解决方法: //给所有jMenuItem添加监听 for(int i = 0; i<jMenuBar1.getMenuCount();i++)//getMenuCount()返回jMenuBar上的jMenu数 { JMenu jm = jMenuBar1.getMenu(i);//返回指定位置的JMenu if(jm != null) { for(int j = 0; j<jm.getMenuComponentCount();j++)//getMenuComponentCount()返回jMenu上的jMenuItem数 { if(jm.getMenuComponent(j) instanceof JMenuItem)//返回指定位置的Component(即jMenuItem) { ((JMenuItem)jm.getMenuComponent(j)).addActionListener(this); } } } }
红胡子海盗 2013-10-23
  • 打赏
  • 举报
回复
要实现的监听,处理的方法是一样的,就是不知道,怎么一下,就全部加上监听,还是没有人解决啊
teemai 2013-10-17
  • 打赏
  • 举报
回复
你的不同菜单应该是处理不同逻辑的,而不同的业务逻辑的ActionListener实现是不一样的,除非你把菜单的id弄成有规律的,放到list里面,事件也做成有规律的,放到list中。比如 for(int i=0; i<100; i++){ menuList.get(i).addActionListener(actionList.get(i)); }
king1076 2013-10-17
  • 打赏
  • 举报
回复
子类化监听适配器!为每个菜单设置id。在这个子类中根据id 实现不同的方法
红胡子海盗 2013-10-17
  • 打赏
  • 举报
回复
用数组循环到是可以,不过我是用NetBeans添加的,我不想在把每个菜单项,都添加在1个数组里,这样我还不如直接加监听, 现在100多个菜单项(jMenuItem),都是没有加入数组的,怎么可以实现不用数组循环,就可以全部加监听
编程点滴 2013-10-11
  • 打赏
  • 举报
回复
用数组不就好了
morelzh 2013-10-11
  • 打赏
  • 举报
回复
其实如果你整个项目有很多,按钮之类的,其实可以把这些写在配置文件当中。 如:jMenuItem=jMenuItem1,jMenuItem2……
普凡 2013-10-11
  • 打赏
  • 举报
回复
如果业务按钮数量不能改变的话,那就写个循环(类似自动加的)
shpery 2013-10-11
  • 打赏
  • 举报
回复
循环处理就OK了
Carl_Z 2013-10-11
  • 打赏
  • 举报
回复
用父类jMenuItemBase 统一 addListener 然后每个子类都继承一下 Class jMenuItem1 extends jMenuItemBase Class jMenuItem2 extends jMenuItemBase ... 子类根据需要重新处理

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧