我遇到了JTree的一些问题。当我在同一个类中创建我的DefaultTreeModel时,JFrame更新正常。但是,我想从另一个类调用更新方法,并且在执行时,JTree保持空白。 JTree处于类GUI中,并在另一个名为store的类中存储。java JTree不更新
public static GUI UI = new GUI();
...
UI.init();
UI.buildJTree(xml);
然而,这什么也不做。然而,我在类图形用户界面我呼吁:
buildJTree(xml);
一切工作正常。有没有人有任何想法,为什么可能有问题?
构建树的方法如下:
public void buildTree(String xml) {
try {
Console.output("Building tree");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(XML.wrap(xml.trim())));
Document doc = db.parse(is);
NodeList xml_packet = doc.getElementsByTagName("packet");
NodeList channels = xml_packet.item(0).getChildNodes().item(0).getChildNodes();
Element start = (Element) xml_packet.item(0).getFirstChild();
this.status_txt.setText(start.getAttribute("connected") + ", connected.");
MutableTreeNode root = new DefaultMutableTreeNode(start.getAttribute("server"));
for (int n = 0; n < channels.getLength(); n++) {
Element fstElmnt = (Element) channels.item(n);
Console.output("CHANNEL::" + fstElmnt.getAttribute("name"));
DefaultMutableTreeNode userss = new DefaultMutableTreeNode(fstElmnt.getAttribute("name"));
root.insert(userss, n);
NodeList users = channels.item(n).getFirstChild().getChildNodes();
for (int usr = 0; usr < users.getLength(); usr++) {
userss.insert(new DefaultMutableTreeNode(users.item(usr).getFirstChild().getNodeValue()), usr);
}
}
model = new DefaultTreeModel(root);
this.trees.setModel(model);
for (int t = 0; t < this.trees.getRowCount(); t++) {
this.trees.expandRow(t);
}
} catch (Exception e) {
e.printStackTrace();
}
}
提前非常感谢。
请添加更多的代码。 '''''buildJTree()'的实现将是一个好的开始。 – akf 2010-02-04 03:56:04
增加了GUI buildXML方法 – Hugh 2010-02-04 11:42:47