Я использую org.dom4j.swing.DocumentTreeModel для создания Swing Jtree из проанализированного документа DOM.Когда я редактирую документ, из которого построено treeModel, я ожидаю, что Jtree немедленно отразит это с помощью treeModel.reload ();
Проблема заключается в том, что когда Jtree сначала полностью свернут, а затем развернут, нажавдерево, оно показывает 3 "тестовых" элемента.Однако в этот момент, когда я добавляю больше тестовых элементов, это изменение больше не отражается!Почему, когда свинг Jtree находится в свернутом состоянии, он может отражать изменения, сделанные путем добавления дополнительных «тестовых» элементов в дерево, но не при расширении свинга Jtree.
Я ожидал, что в режиме реального времени будет добавлено больше «тестовых» элементов независимо от того, открыт JTree или нет.
org.dom4j.swing.DocumentTreeModel treeModel = null;
DemoConstructor(){
DOMReader dr = new DOMReader();
org.dom4j.Document dom4jdocument = dr.read(browser.getDocument());
//Create a split pane and display the tree .
JScrollPane scrollPane = new JScrollPane(createTree(dom4jdocument));
ProgrammaticallyCalledToEditDoc();
ProgrammaticallyCalledToEditDoc();
ProgrammaticallyCalledToEditDoc();
}
private static void ProgrammaticallyCalledToEditDoc(){
dom4jdocument.addElement("test");
}
private static Component createTree(org.dom4j.Document document) {
treeModel = new DocumentTreeModel(document);
TreeModelListener l = new TreeModelListener() {
@Override
public void treeStructureChanged(TreeModelEvent e) {
// TODO Auto-generated method stub
treeModel.reload();
}
@Override
public void treeNodesRemoved(TreeModelEvent e) {
// TODO Auto-generated method stub
treeModel.reload();
}
@Override
public void treeNodesInserted(TreeModelEvent e) {
// TODO Auto-generated method stub
treeModel.reload();
}
@Override
public void treeNodesChanged(TreeModelEvent e) {
// TODO Auto-generated method stub
treeModel.reload();
}
};;;
treeModel.addTreeModelListener(l);
JTree tree = new JTree(treeModel);
return tree;
}