【问题标题】:How to refresh XML in Jtree如何在 Jtree 中刷新 XML
【发布时间】:2012-08-04 04:21:45
【问题描述】:

我读过 here ,但如果 xml 文件发生更改,jtree 不会重新加载 /refreshes
如何创建刷新/重新加载 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

【问题讨论】:

    标签: java xml swing reload jtree


    【解决方案1】:

    我在getJPopupForExplorerTree() 中为popup 添加了一个新的Action。您可能希望从 XMLTree 构造函数中重构 xmlFile;为了方便起见,我已经对其进行了硬编码:

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

    【讨论】:

    • 很高兴为您提供帮助;也可以考虑WatchService
    【解决方案2】:
    • 这是最复杂的代码,可能

    • 阅读关于JTables DefaultTableModel 的教程(DefaultXxxModel 的良好描述概念和逻辑与/相同)

    • 阅读关于JTree的教程

    • 阅读关于Concurency in Swing的教程,

    • 特别是关于SwingWorker的描述

    • 在你的情况下更好(对不起)为DefaultTreeModel创建一个新实例,使用SwingWorker填充数据,将新模型添加到可见JTree

      李>
    • 通过替换模型,您将丢失当前JTree中的所有更改

    【讨论】:

    • @BujanganMuda:我认为您必须从文件中刷新模型,如here 所示。
    【解决方案3】:

    我不知道具体的代码,但你可以试试这个

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

    【讨论】:

    • 好主意,但我认为他必须从文件中刷新模型,如here 所示。 BujanganMuda:另见Q&A
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-09-23
    • 2011-07-19
    • 2015-06-13
    • 2014-07-21
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多