我在搭建一棵树并运行它来获取结果时遇到了一些麻烦,如下图所示。

java - 树和数组-LMLPHP

因此,我应该通过.txt文件创建一个具有根和子级的树。

这是代码,下面我将简要解释。

public class Tree extends TreeFrame{

    Tree() throws FileNotFoundException {
        super();
    }

    private static final long serialVersionUID = 1L;
    DefaultTreeModel model;
    Nod nod;
    static Tree main;
    static String filen ="";

    public void initTree() throws FileNotFoundException{

        filen = "C:/Users/MyComp/workspace/Lab5/src/Lab5/Life.txt";
        @SuppressWarnings("resource")
        Scanner sc = new Scanner(new File(filen));
        sc.nextLine();
        ArrayList<DefaultMutableTreeNode> ar = null;

        while (sc.hasNextLine()){
            String sc2 = sc.nextLine().replace("<", "");
            char chr = '/';

            if (sc2.charAt(0) != chr){
                String[] parts = sc2.split(" ");
                String[] parts2 = parts[1].split("=\"");
                String[] parts3 = sc2.split(">");
                nod = new Nod(parts2[1].substring(0, parts2[1].length() - 2), parts[0], parts3[1]);
                ar = new ArrayList<DefaultMutableTreeNode>();

                for (int i = 0; i < nod.getDepth(); i++){
                    ar.add(nod);
                }
            }

        buildTree(ar);
        }
    }

    void buildTree(ArrayList<DefaultMutableTreeNode> a){

            model = new DefaultTreeModel (a);
            tree = new JTree(model);
            tree.setBackground(Color.green);
    }


    void showDetails(TreePath path){
        if (path == null)
        return;

        int a = path.getPathCount()-1;
        DefaultMutableTreeNode b = (DefaultMutableTreeNode) path.getPathComponent(a);
        String info = ((Nod) b).getText();
        JOptionPane.showMessageDialog(this, info);
    }


    public static void main(String[] args) throws FileNotFoundException{
        if(args.length>0){
            filen=args[0];
        }

        main = new Tree();
    }
}


Nod只是使对象具有名称,级别和文本的类。

因此,主要思想是导入文件->读取文件->创建文件的对象->创建数组并在其中添加“节点” /对象->通过array /创建TreeModel “节点”->通过TreeModel创建树(如您所见)->并使用扩展名运行它以获取GUI。但是我在ArrayList<DefaultMutableTreeNode>上收到语法错误。

看到问题了吗?

最佳答案

直接的问题是没有任何DefaultTreeModel构造函数接受ArrayList作为参数。参见文档here

我认为您可能需要阅读有关如何使用JTreetutorial

09-29 19:49