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

ActionEvent.getSource()的困惑
Java code


public class ChangePwdTeacher extends JPanel implements ActionListener{

    private JTextField jtf = new JTextField();   // 创建用户名输入框
    //创建一组密码框
    ……
    public void addListener(){
        jtf.addActionListener(this);
        ……
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == jtf){
            ……
        }
    }
    
}

ActionEvent 继承了 java.util.EventObject 的source字段、getSource() 方法。
  自己也有 设置 source 的构造器
  ActionEvent(Object source, int id, String command) 
  ……
但到底是怎样初始化的呢?
就调用:
public void addListener(){
jtf.addActionListener(this);
……
}
??
有点迷糊!

------解决方案--------------------
e.getSource()返回添加事件监听的对象,如你写就是JTextField 对象.
这在一个监听事件监听多个不同类型对象时很有用.