来一下简单的代码:JButton b1 = new JButton();
b1.addActionListener(new ActionListener() 
 {
@Override
public void actionPerformed(ActionEvent e)
         {
doSomething();
}
});
如上的代码,每个组件我都这么写,如果有二三十个的话,会不会性能影响很大?这只是一个页面的,还有好多呢。

解决方案 »

  1.   

    没你想象的那么严重
    没有什么影响的当然,
    你也可以学 Swing 源码中的监听器的模式
    所有的控件共用一个监听器
    然后在方法内部判断源是哪个,然后再执行相应的代码
    这样可以少 new 几监听器个对象出来
      

  2.   

    我只能说你可能是刚工作,或者是压根没有做过Swing 桌面开发的经验swing一样可以MVC, Listener本质上就Controller
    就好象WEB MVC中的 Serverlet一样,难道你会要求WEB 页面跟Servlet的个数相同吗只不过从架构上说,WEB MVC是主动模式, Swing的MVC架构是被动模式
    而且很多学Swing的人的通病是根本没有MVC的概念,不知道怎么在Swing
    中实现MVC这个才是楼主面临的问题!
      

  3.   


    现在的 Swing 控件的监听器来本就是用观察者模式来实现的至于 java 中那个 “Observer” 类,
    是为了当年控件还没有使用观察者模式时服务的
    让程序员自己实现观察者模式,而现在 Swing 控件已经是观察者模式了,
    Observer 就变鸡肋了
      

  4.   

    确认参加工作不久,并且没做过swing开发 第一次啊。Swing的MVC我也听过,在原有的代码也见过。
    那我该怎么做呢?
    是将承载这些组件的面板实现监听,然后将页面上的所有组件都注册该面板为监听器?
    大侠求教~另外swing里的多线程编程,我对事件分发线程还是比较模糊,在什么情况下用invokeLater还是比较没概念的。SwingUtilities.isEventDispatchThread()这个方法可以判断是否在事件分发线程,不过我不晓得什么样的情况下用啊