如何刷新XML中的JTree(How to refresh XML in Jtree)

2019-06-26 20:07发布

我读到这里 ,但如果XML文件改变的JTree不会重新加载/刷新
如何创建刷新函数/重载的JTree
我尝试写的代码:

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");
}};

但我得到的错误:显示java.lang.NullPointerException

Answer 1:

我添加了一个新的Action ,以popupgetJPopupForExplorerTree() 你可能会想重新因子xmlFile出的XMLTree构造; 我硬编码它下面的权宜之计:

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);
        }
    }
});


Answer 2:

  • 这是最复杂的代码,可能

  • 读教程约JTables DefaultTableModel (良好所述概念和逻辑对于DefaultXxxModel是similair /相同)

  • 阅读教程JTree

  • 阅读教程Concurency in Swing

  • 关于特别说明SwingWorker

  • 你的情况更好(对不起,那)将创建一个新的实例DefaultTreeModel ,通过使用填充数据SwingWorker ,增加新的模式,可见JTree

  • 通过更换机型,你会失去当前的所有更改JTree



Answer 3:

我不知道spesific代码,但你可以试试这个

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();
}}; 


文章来源: How to refresh XML in Jtree