日期:2014-05-20  浏览次数:20942 次

swing中的监听器是有多耗性能啊?
来一下简单的代码:

JButton b1 = new JButton();
b1.addActionListener(new ActionListener() 
 {
@Override
public void actionPerformed(ActionEvent e)
  {
doSomething();
}
});


如上的代码,每个组件我都这么写,如果有二三十个的话,会不会性能影响很大?这只是一个页面的,还有好多呢。


------解决方案--------------------
没你想象的那么严重
没有什么影响的

当然,
你也可以学 Swing 源码中的监听器的模式
所有的控件共用一个监听器
然后在方法内部判断源是哪个,然后再执行相应的代码
这样可以少 new 几监听器个对象出来
------解决方案--------------------
我只能说你可能是刚工作,或者是压根没有做过Swing 桌面开发的经验

swing一样可以MVC, Listener本质上就Controller
就好象WEB MVC中的 Serverlet一样,难道你会要求WEB 页面跟Servlet的个数相同吗

只不过从架构上说,WEB MVC是主动模式, Swing的MVC架构是被动模式
而且很多学Swing的人的通病是根本没有MVC的概念,不知道怎么在Swing
中实现MVC这个才是楼主面临的问题!
------解决方案--------------------
探讨

可以用观察者模式来做,提高复用率

------解决方案--------------------
回复来测试一下