UPDATE:它不一定要使用靜態文件。是否正在使用全局變量字符串,並且如果長度可能發生變化,則正在監聽?Java Swing:如何立即將對xml文件所做的更改反映到可視化樹中?
我想做什麼:基本上,我試圖表示在其他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;
}