public class myPanel extends JPanel {
private JButton bt=new JButton("h");
private ActionListener action=null;
public myPanel(){
this.add(bt);
bt.addActionListener(action);

}
   public void setActionListener(ActionListener ac){
   this.action=ac;
   }
}
这个类很简单,只有一个按钮,然后我给他加了一个未实现的监听器,我的目的是以后实现再通过setActionListener方法传入,但实际上不起作用,我后来写了一个类实现ActionListener 然后传入,一点反应都没有,跟踪显示根本就没执行到actionPerformed方法.这是为什么?

解决方案 »

  1.   

    i think:
    public void setActionListener( JButton bt, ActionListener ac ){
        if(bt != null && ac != null){
            bt.add(ac)
        }
    }
      

  2.   

    private   ActionListener   action=null;
    bt.addActionListener(action); 相当于bt.addActionListener(null); 
    这样的情况下你还想执行什么事件呢?
    比如 
    object o1=null;
    object o2=o1;
    o1=new String("111");这个时候o2还是NULL啊
      

  3.   

    被楼上的抢先看出来啦:
    就是好你的类的方法的形参的名字不小心与好i你的类的成员变量同名了,而你此时的类的成员action有恰好给null,所以addlistener(null)给执行了,所以就没看你相想要的结果啦!!
    哎散点分啦
    手多冻僵了
    好冷啦。下雪了!!
      

  4.   

    KK3K2005,freecodetor:你们的意思我懂,action只是一个引用,先开始是null不错, 不过后来我用set方法传入了呀,传入之后就不应该是null了呀,难道加过监听器以后就不能再传入了吗?