就是想问一下 把ActionListener放到类内和类外的区别  源代码如下:
package cha1;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Test6 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame a = new MyFrame();
}}class MyFrame extends JFrame {
JButton b1;
JTextArea text; public MyFrame() {
super();
b1 = new JButton("button1");
text = new JTextArea(); JPanel cont = (JPanel) this.getContentPane();
cont.add(b1, BorderLayout.CENTER);
cont.add(text, BorderLayout.NORTH); b1.addActionListener(new MyListener(this));
this.setBounds(250, 250, 250, 250);

this.setVisible(true);
}
}class MyListener implements ActionListener {
MyFrame myframe; public MyListener(MyFrame myframe) {
// TODO Auto-generated constructor stub
this.myframe = myframe;} public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
myframe.text.append("aa");
}
}
再如果把监听放到 MyFrame类内
放到外面会经常出错   
求强人解释 Listener起什么作用  

解决方案 »

  1.   

    这种问题到java API中查一下,你会有一个全面本质的认识。
      

  2.   

    事件处理,必然由这三个组成。事件源,事件(event),监听器(Listener),而这三个都是对象,java中,所有东西都是对象。事件源顾名思义,是产生事件的对象;事件是由事件源产生,比如,一个button可以看作事件源,点击一下该button就可以产生事件,你可以看API文档了解这些。而监听器是用来监听事件的,一旦注册过的事件源产生事件,监听器会监听到,做出相应的处理,比如,可以显示一幅图片等。
    事件的处理是注册机制,就是事件源对象只有注册了相应的监听器,该事件源产生事件时该监听器才会处理。
    listener就是监听器,监听器类放在里面和放在外面应该都可以,不过我一般放在里面,因为事件源如果是private私有的,在类外面是不可以用的,而监听器类一般都得用到事件源对象