J'ai quelques problèmes avec JTree. Lorsque je crée mon DefaultTreeModel dans la même classe, le JFrame a été mis à jour correctement. Cependant, je veux appeler la méthode de mise à jour d'une autre classe et quand je fais le JTree reste vide. Le JTree est dans la classe GUI et stocké comme tel dans une autre classe appelée store.java JTree ne pas mettre à jour
public static GUI UI = new GUI();
...
UI.init();
UI.buildJTree(xml);
Cependant, cela ne fait rien. J'ai cependant dans l'interface graphique de la classe que j'appelle:
buildJTree(xml);
Tout fonctionne bien. Quelqu'un a-t-il des idées sur la raison pour laquelle il pourrait y avoir un problème?
méthode de l'arbre de construction est la suivante:
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();
}
}
Merci beaucoup à l'avance.
S'il vous plaît ajouter plus de code. L'implémentation de 'buildJTree()' 'GUI' serait un bon début. – akf
Ajout de la GUI buildXML méthode – Hugh