Java Swing : how to reflect changes made to xml file immediately to visual tree?

标签 java xml swing treeview

更新:它不必使用静态文件。是否使用全局变量字符串并监听其长度是否可能发生变化?

我想做什么:基本上,我试图表示在另一个 Jpanel 上呈现的 xml 文档的可视化树表示。当我在此呈现的 xml 文档上选择节点时,我想将该 xml 节点添加到可视化树中。所以本质上,渲染组件和可视化树组件共享相同的 xml 文件/变量。

问题(我愿意接受其他建议):

我有一个使用 org.apache.xerces.parsers.SAXParser 通过以下方法生成的可视化树。

它读取一个 xml 文件并返回要在屏幕上呈现的 scrollPane 组件。

我需要能够添加或删除节点并进行编辑。所以当我点击一个按钮时,它会在可视化树中添加一个节点。但是,我认为当更新 xml 文件以快速绘制树时,需要有一些事件监听器。这可能效率低下(?),因为每次发生 xml 文件更改事件时都需要重新绘制树?

private static Component createTree() {
         DefaultMutableTreeNode top = new DefaultMutableTreeNode("test"));

         SAXTreeBuilder saxTree = new SAXTreeBuilder(top); 

         try {             
             SAXParser saxParser = new SAXParser();
             saxParser.setContentHandler(saxTree);
             saxParser.parse(new InputSource(new FileInputStream("test1.xml")));
         }catch(Exception ex){
             ex.printStackTrace();
             top.add(new DefaultMutableTreeNode(ex.getMessage()));
         }

         JTree tree = new JTree(saxTree.getTree()); 
         JScrollPane scrollPane = new JScrollPane(tree);

        return scrollPane;
    }

最佳答案

第一次绘制树时,首先将 XML 文件的修改时间存储在临时变量中,然后使用线程或 TimerTask 跟踪修改时间,如果修改时间与临时变量相比有任何变化这意味着 XML 文件已修改。请调用 TreeView 生成代码。

关于Java Swing : how to reflect changes made to xml file immediately to visual tree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468777/

相关文章:

java - JScrollPanes 滚动条不显示

java - 在收到 UDP 数据包之前不显示 Activity

java - 数组中的下一个和上一个按钮每次按下都会在数组中循环太多次(超过一次)

java - 无法访问 jarfile, `ProcessBuilder`

java - 从字符串数组更新 mysql 数据库

c# - 从 Azure 使用 C# 获取 XML 文件作为响应

当添加第二个 JPanel 时,Java CardLayout JPanel 向上移动

java - Android Studio : SearchView: error in searchView. setSearchableInfo(searchManager.getSearchableInfo(cn));

java - 无法解析构造函数 'ImageButton()'

java - 如何从变量设置 jspinner 最大值?