2009-04-17 5 views
0

XSOM API(https://xsom.dev.java.net)を使用してXMLスキーマファイルのノードをJTreeにロードしました。JTreeの選択パス

私はfolowingないファイルが選択されるたびに:

schemaParser = new XSDParser(selectedFile.getAbsolutePath()); 

TreeModel model = schemaParser.generateTreeModel(); 
schemaTree.setModel(model); 
schemaTree.setCellRenderer(new SchemaTreeTraverser.SchemaTreeCellRenderer()); 

schemaTreeはJTreeのための変数名です。次のように

XSDParserためのコードは次のとおりです。ノードがJTreeの中で選択されるたびに

package schemaparser; 

import java.io.*; 
import com.sun.xml.xsom.XSSchemaSet; 
import com.sun.xml.xsom.impl.util.SchemaTreeTraverser; 
import com.sun.xml.xsom.impl.util.SchemaWriter; 
import com.sun.xml.xsom.parser.XSOMParser; 

import javax.swing.tree.TreeModel; 

public class XSDParser { 

    private XSOMParser reader; 
    private XSSchemaSet xss; 

    public XSDParser(String parseFile){ 
     try { 
      reader = new XSOMParser(); 
      reader.parse(new File(parseFile)); 

      xss = reader.getResult(); 
      if (xss == null) { 
       System.out.println("error"); 
      } 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    public TreeModel generateTreeModel() { 
     SchemaTreeTraverser stt = new SchemaTreeTraverser(); 
     stt.visit(xss); 
     TreeModel model = stt.getModel(); 

     System.out.println("Returning the tree model"); 
     return model; 
    } 
} 

は今、私は次のようにします。しかし、今

private void schemaTreeValueChanged(javax.swing.event.TreeSelectionEvent evt)  {           

     TreePath path = schemaTree.getSelectionPath(); 

     if(path != null) 
      System.out.println(path.toString()); 

} 

私が選択したノードに関係なく、 (null、null、null、null)(階層の深さによって異なります)

単純なJTreeでは、通常、ノードへのパスが出力されます。 [JTree、colors、red]

誰でもこの問題を解決する方法はありますか?

おかげで、 パトリック

+0

XSDParserおよびSchemaTreeTraverser.SchemaTreeCellRendererの詳細を指定する必要があります。 – Clint

+0

追加情報を今すぐ追加! –

答えて

1

あなたが選択したパスのJTreeを要求すべきではありませんが、あなたはTreeSelectionEventからそれらを取得する必要があります。

関連する問題