JTree에 몇 가지 문제가 있습니다. 같은 클래스 내에서 DefaultTreeModel을 만들면 JFrame이 잘 업데이트됩니다. 그러나 다른 클래스에서 update 메소드를 호출하고 싶을 때 JTree를 수행 할 때 비어있게됩니다. JTree는 클래스 GUI에 있으며 store라는 다른 클래스에 저장됩니다.java JTree가 업데이트되지 않습니다.
public static GUI UI = new GUI();
...
UI.init();
UI.buildJTree(xml);
그러나, 이것은 아무것도하지 않습니다. 그러나 클래스 GUI 안에 내가 전화 :
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();
}
}
많은 감사를 다음과 같이
빌드 트리 방법이다.
는 더 많은 코드를 추가하십시오. 'GUI'의'buildJTree()'구현은 좋은 시작이 될 것입니다. – akf
GUI buildXML 메서드 – Hugh