I read here , but if the xml file changes the jtree does not reload /refreshes
how to create a function for refresh / reload Jtree
I try to write code :
refreshAction = new AbstractAction("Refresh", IconFactory.getIcon("delete", IconFactory.IconSize.SIZE_16X16)) {
public void actionPerformed(ActionEvent e) {
XMLTree xmlClass = null;
((DefaultTreeModel) xmlClass.getModel()).reload();
System.out.println("Refresh");
}};
but i got the error : java.lang.NullPointerException
I added a new Action
to popup
in getJPopupForExplorerTree()
. You'll probably want to re-factor xmlFile
out of the XMLTree
constructor; I've hard coded it for expedience below:
popup.add(new AbstractAction("Reload") {
public void actionPerformed(ActionEvent e) {
System.out.println("Reload");
try {
root = getRoot("xml.xml");
setModel(new XMLTreeModel(root));
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
});
this is most complex code, probably
read tutorial about
JTables DefaultTableModel
(good described concept and logics forDefaultXxxModel
is similair / the same)read tutorial about
JTree
read tutorial about
Concurency in Swing
,especially description about
SwingWorker
in your case better (sorry for that) would be create an new instance for
DefaultTreeModel
, fills data by usingSwingWorker
, add new model to the visibleJTree
,by replacing model you'll lost all changes in the current
JTree
I dont know the spesific code but you can try this
refreshAction = new AbstractAction("Refresh", IconFactory.getIcon("delete", IconFactory.IconSize.SIZE_16X16)) {
public void actionPerformed(ActionEvent e) {
DefaultTreeModel myTreeModel = (DefaultTreeModel) xmlClass.getModel();
myTreeModel.reload();
revalidate();
repaint();
}};
来源:https://stackoverflow.com/questions/11841117/how-to-refresh-xml-in-jtree