就是想问一下 把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起什么作用
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起什么作用
事件的处理是注册机制,就是事件源对象只有注册了相应的监听器,该事件源产生事件时该监听器才会处理。
listener就是监听器,监听器类放在里面和放在外面应该都可以,不过我一般放在里面,因为事件源如果是private私有的,在类外面是不可以用的,而监听器类一般都得用到事件源对象