Путь выбора JTree - PullRequest
       15

Путь выбора JTree

0 голосов
/ 17 апреля 2009

Я загрузил JTree с узлами из файла XML-схемы, используя XSOM API (https://xsom.dev.java.net).

Каждый раз, когда файл выбран, я делаю следующее:

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());

}

Однако теперь, независимо от того, какой узел я выбрал в дереве, я получаю что-то вроде: [ноль, ноль, ноль, ноль] (в зависимости от того, как далеко я иду по иерархии)

Для простого JTree это обычно выводило бы путь к узлу, например: [JTree, colors, red]

Кто-нибудь есть идеи, как это исправить?

Спасибо, Патрик

1 Ответ

1 голос
/ 17 ноября 2010

Вы не должны спрашивать JTree о выбранных путях, вы должны получить их от TreeSelectionEvent.

...