java - JTree的选择路径

标签 java swing xsd selection jtree

我已使用 XSOM API ( https://xsom.dev.java.net ) 从 XML 架构文件加载了带有节点的 JTree。

每次选择文件时,我都会执行以下操作:

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

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

schemaTree 是 JTree 的变量名称。

XSDParser的代码如下:

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;
    }
}

现在,每当在 JTree 中选择一个节点时,我都会执行以下操作:

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,颜色,红色]

有人知道如何解决这个问题吗?

谢谢, 帕特里克

最佳答案

您不应该向 JTree 询问所选路径,您应该从 TreeSelectionEvent 获取它们。

关于java - JTree的选择路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761002/

相关文章:

java - 如何识别哪个jsp文件调用了哪个servlet

java - 我的角色不会在屏幕上移动

xml - XSD 属性(不是元素)不应为空字符串

java - javax.swing.* 中的默认 JButton

java - 非法前向引用 netbeans swing

java - 在 XSD 中定义一个元素,它是一个 ENUM 并且具有一个属性

xml - 解析 XML 数据绑定(bind)向导时值为空

java - for循环中的扫描器,在获取任何输入之前循环一次

java - 如何在生产中生成 cpu 快照?

java - 使用 Java 解析 HTML 标签