views:

207

answers:

2
this.addTreeSelectionListener(new TreeSelectionListener() {

  public void valueChanged(TreeSelectionEvent e) {

   // How do I access the parent tree from here?   
  }   
 });
A: 

TreeSelectionListener is an interface, so the only parent class would be Object, which you should be able to call with super.

If you meant calling some method of the enclosing class, you can call it directly as within a method.

Christian Strempfer
+3  A: 

You can use OuterClass.this:

public class Test {

    String name; // Would normally be private of course!

    public static void main(String[] args) throws Exception {
        Test t = new Test();
        t.name = "Jon";
        t.foo();
    }

    public void foo() {
        Runnable r = new Runnable() {
            public void run() {
                Test t = Test.this;
                System.out.println(t.name);
            }
        };
        r.run();
    }
}

However, if you just need to access a member in the enclosing instance, rather than getting a reference to the instance itself, you can just access it directly:

Runnable r = new Runnable() {
    public void run() {
        System.out.println(name); // Access Test.this.name
    }
};
Jon Skeet