2017-05-23 2 views
0

ツリーを上に置いて実行して、下の図のような結果が得られました。ツリーと配列

enter image description here

だから私は.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は名前、レベル、テキストのオブジェクトを作るクラスに過ぎません。

主な考えは、ファイルを読み込み - オブジェクトを作成 - >配列を作成し、ノード/オブジェクトを追加する - >TreeModel配列/ "ノード" - >TreeModel(見ての通り) - >ツリーを作成し、拡張子を付けて実行してGUIを取得してください。しかし、ArrayList<DefaultMutableTreeNode>に構文エラーがあります。

問題が表示されますか?

+0

を**必ず**あなたの質問との完全なエラーメッセージを投稿してください。あなたは質問を可能な限り簡単に答えるようにしたいと思いますか? –

+0

ループの繰り返しごとにarraylistを再作成していることに注意してください。 arraylistを最初から作成して使用しますが、再作成はしません。 –

+0

同じ配列にすべてのオブジェクトを追加したかっただけですが、そのループで何か問題があると思います。 – Alwe17

答えて

1

DefaultTreeModelコンストラクタでは、ArrayListを引数として受け付けないという問題があります。ドキュメントhereを参照してください。

JTreeの使用方法についてはtutorialをお読みください。

0

句場合は、これを変更する必要があります。

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); } } 
関連する問題