比如:
class A extends JPanel {
  private JSpinner sp; 
  private ChangeListener contentChangeListener;
   A() {
    sp.addChangeListener(contentChangeListener);  
  }
   
   public ChangeListener getContentChangeListener() {
     return this.contentChangeListener;
  }
   public void setContentChangeListener(ChanegListener con) {
     this.contentChangeListener = con;
}class B {
  B() {
   ChangeListener con = new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
         //doNothing.
      }
        
    };
  
 }
}
请问可以从B中设置A的sp的监听吗,入股可以,改怎么做?

解决方案 »

  1.   

    1实现listener接口,呵呵
    2注册监听器
      

  2.   

    你在 calss A 里不就有一个返回监听器的例子 getContentChangeListener() 吗,就按照这样做就行了
    class A extends JPanel {
      private JSpinner sp;
      private ChangeListener contentChangeListener;
      A() {
        sp.addChangeListener(contentChangeListener); 
      }
     
      public ChangeListener getContentChangeListener() {
        return this.contentChangeListener;
      }
      public void setContentChangeListener(ChanegListener con) {
        // this.contentChangeListener = con;
        this.contentChangeListener = new B().getChangeListener();
      }class B {
      pirvate ChangeListener con;
      public B() {
          con = new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
            //doNothing.
          }
      }  public ChangeListener getChangeListener() {
        retrun this.con;
      }
    }如果这个监听器在 class B 的实例没有任何用处,则可以考虑使用类的静态方法
    class A extends JPanel {
      private JSpinner sp;
      private ChangeListener contentChangeListener;
      A() {
        sp.addChangeListener(contentChangeListener); 
      }
     
      public ChangeListener getContentChangeListener() {
        return this.contentChangeListener;
      }
      public void setContentChangeListener(ChanegListener con) {
        // this.contentChangeListener = con;
        this.contentChangeListener = B.getChangeListener();
      }class B {
      public B() { }
      public static ChangeListener getChangeListener() {
        ChangeListener con = new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
           //doNothing.
        }
        retrun con;
      }
    }
      

  3.   

    问题已解决,直接在B中新建一个类C,C extends B, OK,直接在C中添加,免得麻烦.