ОБНОВЛЕНИЕ : не обязательно использовать статические файлы.Возможно ли использование строки глобальной переменной и прослушивание, если это изменилось по длине?
ЧТО Я ПЫТАЮСЯ СДЕЛАТЬ: По сути, я пытаюсь представить визуальное древовидное представление документа xmlэто отображается на другой Jpanel.Когда я выбираю узел в этом визуализированном документе XML, я хочу добавить этот узел XML в визуальное дерево.По сути, визуализированный компонент и компонент визуального дерева используют один и тот же файл / переменную xml.
ПРОБЛЕМА (я открыт для альтернативных предложений):
У меня естьвизуальное дерево, сгенерированное следующим методом с использованием org.apache.xerces.parsers.SAXParser .
. Оно считывает файл XML и возвращает компонент scrollPane, который будет отображаться на экране.
Мне нужно иметь возможность добавлять или удалять узлы и редактировать.Поэтому, когда я нажимаю кнопку, он добавляет узел в визуальное дерево.Тем не менее, я думаю, что должен быть какой-то прослушиватель событий, когда XML-файл был обновлен, чтобы быстро нарисовать дерево.Это может быть неэффективно (?), Поскольку требует перерисовки дерева каждый раз, когда происходит событие изменения файла XML?
private static Component createTree() {
DefaultMutableTreeNode top = new DefaultMutableTreeNode("test"));
SAXTreeBuilder saxTree = new SAXTreeBuilder(top);
try {
SAXParser saxParser = new SAXParser();
saxParser.setContentHandler(saxTree);
saxParser.parse(new InputSource(new FileInputStream("test1.xml")));
}catch(Exception ex){
ex.printStackTrace();
top.add(new DefaultMutableTreeNode(ex.getMessage()));
}
JTree tree = new JTree(saxTree.getTree());
JScrollPane scrollPane = new JScrollPane(tree);
return scrollPane;
}