你所说的很多方法都是由FileSystemModel的接口TreeModel调用.
这有点象回调,你实现接口方法,由父类调用.
listeners = new java.util.Vector();
用于保存监听器队列的列表.由系统调用.

解决方案 »

  1.   

    呵呵,不懂--真没写过Swing的程序
    不过让我说话,也只能不懂装懂瞎说几句了
    getRoot()在应调用的地方未调用,首先,我认为不要过分迷信别人的程序,无论他是怎样的高。
    其次,正如nil2000(我爱北京天安门)兄所说,实现不仅仅是为了内部调用,没有调用并不代表它没用,子类是需要根据自己的情况覆盖一些超类的方法的。
    listeners = new java.util.Vector();是为了能够编译
    因为你定义时并未初始化:
    private java.util.Vector listeners; // Declare the listeners vector
      

  2.   

    Tree 是一个mvc,如果你想扩展的话,只能深入api和源码了.
      

  3.   

    nil2000说的对啊,这些方法是实现TreeModel接口的。你的对象实现了这个接口,再把对象的实例给JTree的构造函数JTree tree = new JTree(fileSystemDataModel);,这样JTree才能把你的数据显示出来。方法的具体意思看文档吧,我看挺简单的,你要构造一个Tree,就需要Root和Child,也就是这些吧。
      

  4.   

    方法什么时候用的:你在TTreeModel构造函数中最后调了show();,于是TTreeModel显示自己以及在JScrollPane scrollPane上面的JTree tree。JTree tree显示时会调用FileSystemModel fileSystemDataModel的getRoot()等方法,以得到文件树的根和子节点,然后就把这些东西显示出来。
      

  5.   

    前面几位高手都讲了,我正中小辈就不用废话了。你要相信nil2000,wangwenyou的话,他们讲的一点不错。因为你定义时并未初始化:
    private java.util.Vector listeners; // Declare the listeners vector
    listeners = new java.util.Vector();//初始化再说,接口
    有些继承抽象类(A)的子类(B),一定要实现接口,否则是无法声明对象(A,B)。也就是说,你要用到类B,必需要实现父类接口。但是,具体的这些接口
    的用途可能有多种。
    就像wangwenyou所说的,可能是父类的内部使用,也有的是为了给你提供方便。是不是我的话很多余啊!因为大家都讲过了。
    不好意思当我没讲。
      

  6.   

    同意wangwenyou(王文友),发现问题,多回答问题,就能提高.
      

  7.   

    搜索一下,有一本书专门讲到swing,是一个国外的网站,有源代码。其中有filesystemtree.