Netbeans: как заполнить JTree динамически? - PullRequest
2 голосов
/ 20 октября 2011

Я занимаюсь разработкой небольшого настольного приложения на Java с использованием NetBeans. В какой-то момент мне нужно прочитать данные из XML-файла, а после чтения мне нужно сохранить их в объекте моего пользовательского класса. Я успешно выполнил вышеупомянутую задачу (т.е. я читаю данные XML и сохраняю эти данные в объекте моего пользовательского класса). Теперь я хочу заполнить JTree этим объектом. Предположим, мой XML выглядит так:

<Employees>
    <Classification type="permanent">
        <Emp>
            <name>Emp1_Name<name/>
        </Emp>
        <Emp>
            <name>Emp2_Name<name/>
        </Emp>    </Classification>
    <Classification type="part time">
        <Emp>
            <name>Emp1_Name<name/>
        </Emp>
        <Emp>
            <name>Emp2_Name<name/>
        </Emp>    </Classification>
    </Classification>
</Employees>

Теперь я хочу, чтобы мое дерево выглядело так

Employees
    Permanent Employees
        Emp1_Name
        Emp2_Name
    Part Time Employees
        Emp1_Name
        Emp2_Name

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Это может быть полезно для вас:

http://www.arsitech.com/xml/jdom_xml_jtree.php

http://www.wsoftware.de/SpeedJG/XMLTreeView.html

Код, полученный от: Java: как отобразить файл XML в JTree

public JTree build(String pathToXml) throws Exception {
     SAXReader reader = new SAXReader();
     Document doc = reader.read(pathToXml);
     return new JTree(build(doc.getRootElement()));
}

public DefaultMutableTreeNode build(Element e) {
   DefaultMutableTreeNode result = new DefaultMutableTreeNode(e.getText());
   for(Object o : e.elements()) {
      Element child = (Element) o;
      result.add(build(child));
   }

   return result;         
}
1 голос
/ 20 октября 2011

Вам нужно написать функцию для извлечения информации о вашем объекте приложения. Вы можете использовать SAX или DOM-парсер для этого

    DefaultMutableTreeNode root = new DefaultMutableTreeNode()
    Object object = //function to fetch the information of your Object
// if you are storing all objects in a vector then read element of object
    root.add((DefaultMutableTreeNode)object)
...