class A extends JPanel{
    B b;
}class B extends JPanel{
    JTable table;
}
table.addMouseListener(new MouseListener(){这里面获取table选中的行索引,怎么让class A获得此行索引并且相应一系列动作?});

解决方案 »

  1.   

    使用观察者模式,把A设置为观察者,再在B中定义一个被观察者,触发事件后用被观察者通知A处理。import java.util.Observable;
    import java.util.Observer;
    import javax.swing.JPanel;public class Test3 {

    //观察者
    class  A extends JPanel  implements Observer{ public void update(Observable o, Object arg) {
    // TODO Auto-generated method stub
    System.out.println("index:"+arg);
    }
    }

    class  B extends JPanel{ ObservableClass observableClass;

    public B(Observer A){
    if(A!=null){
    this.observableClass = new  ObservableClass();
    this.observableClass.addObserver(A);
    }
    }

    public void click(int index) { if(this.observableClass !=null){
    this.observableClass.fireClickEvent(index);
    }
    }

    }
    //被观察者
    class ObservableClass extends Observable{   
     
    public void fireClickEvent(int index){
    this.setChanged();//设置改变状态
    notifyObservers(Integer.valueOf(index)); //通知观察者  
    }

    }

    public void init(){
    A a=new A();
    B b= new B(a);

    b.click(5);//点击第5行
    b.click(6);//点击第6行
    b.click(7);//点击第7行
    }

    public static void main(String args[]){

    new Test3().init(); }
    }
      

  2.   

    使用观察者模式,把A设置为观察者,再在B中定义一个被观察者,触发事件后用被观察者通知A处理。import java.util.Observable;
    import java.util.Observer;
    import javax.swing.JPanel;public class Test3 {

    //观察者
    class  A extends JPanel  implements Observer{ public void update(Observable o, Object arg) {
    // TODO Auto-generated method stub
    System.out.println("index:"+arg);
    }
    }

    class  B extends JPanel{ ObservableClass observableClass;

    public B(Observer A){
    if(A!=null){
    this.observableClass = new  ObservableClass();
    this.observableClass.addObserver(A);
    }
    }

    public void click(int index) { if(this.observableClass !=null){
    this.observableClass.fireClickEvent(index);
    }
    }

    }
    //被观察者
    class ObservableClass extends Observable{   
     
    public void fireClickEvent(int index){
    this.setChanged();//设置改变状态
    notifyObservers(Integer.valueOf(index)); //通知观察者  
    }

    }

    public void init(){
    A a=new A();
    B b= new B(a);

    b.click(5);//点击第5行
    b.click(6);//点击第6行
    b.click(7);//点击第7行
    }

    public static void main(String args[]){

    new Test3().init(); }
    }
      

  3.   

    额,我的代码里面,B是A里面的一个私有属性。初始化的时候,B在A前面初始化吧。构造B的时候没办法传递A。
      

  4.   


    就是B不知道A的引用啊。有没像.parent()这样的方法的