import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;public class CerateTree  {    public CerateTree() {
        super();        
    }    public JTree makeTree(){
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
        DefaultMutableTreeNode country = new DefaultMutableTreeNode("国家");
        root.add(country);
        JTree tree = new JTree(root);
        tree.setEditable(true);
        return tree;
    }
 }class test {
    public static void main(String [] args){
        JFrame frame = new JFrame();
        frame.setSize(500,500);
        JTree tree = new CerateDnDTree().makeTree();
        JScrollPane sro = new JScrollPane(tree);
        frame.add(sro);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
现在不想将构造树放在makeTree()方法中,而是构造成一个类.使tree直接能
 tree = new CerateTree() 而不用 new CerateTree().makeTree()调用其方法.该怎么修改.. 改了好久老是有问题,谁能帮帮忙,郁闷中..

解决方案 »

  1.   

    想达到Tree tree = new CerateTree()的效果需要把CerateTree extends Tree 。
    然后构造写成:
    public CerateTree() {
        super(this.getDefaultNode());
        this.setEditable(true);
    }private DefaultMutableTreeNode getDefaultNode(){
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
        DefaultMutableTreeNode country = new DefaultMutableTreeNode("国家");
        root.add(country);
        return root;
    }
      

  2.   

    不好意思更正一下,是继承JTree
      

  3.   

    public CerateTree() {    super(this.getDefaultNode()); //这里编译不过
                                  //提示connot reference 'CerateTree().getDefaultNode()'
                                  //before supertype constructor has been called.    this.setEditable(true);
    }应该怎么写呢?  弄了N久 还是不行..帮帮忙,自己都弄晕了..
      谢谢楼上的帮忙...