我使用org.dom4j.swing.DocumentTreeModel从分析的DOM文档构造Swing Jtree。当我编辑treeModel的构建文档时,我期望Jtree能够立即通过treeModel.reload()来反映这一点;刷新JtreeModel不起作用,但Jtree相应地更新
问题是,当Jtree先完全折叠,然后通过单击树来展开时,它会显示3个“测试”元素。但是,在这一点上,当我添加更多测试元素时,这种变化不再体现出来!为什么当Jtree swing处于折叠状态时,它能够反映通过向树添加附加“测试”元素所做的更改,而不是Jtree swing展开时的更改。
我完全期待更多的“测试”元素被实时追加,不管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;
}
失踪(或删除;-)通讯 – kleopatra 2011-04-07 22:25:33