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]
誰でもこの問題を解決する方法はありますか?
おかげで、 パトリック
XSDParserおよびSchemaTreeTraverser.SchemaTreeCellRendererの詳細を指定する必要があります。 – Clint
追加情報を今すぐ追加! –