JTREE+ XML

alexluna
07 de Julio del 2006
hola gente, mando este trozo de codigo, se trata de un xml en Jtree y mi duda es la siguiente, como puedo armar un metodo recursivo para mostrar los nodos del arbol, jerarquicamente hacia arribaaa. mostarar los muestra pero no recursivo, de tal forma que vaya iterando hasta encontrar el corte del xml....... alguien podria ayudarme? gracias !!


private void jTree1MouseClicked(java.awt.event.MouseEvent e) {//GEN-FIRST:event_jTree1MouseClicked


if (e.getClickCount() == 1) {
if (e.getButton() == MouseEvent.BUTTON1) {
int selRow = jTree1.getRowForLocation(e.getX(), e.getY());
if (selRow != -1) {
TreePath selPath = jTree1.getPathForLocation(e.getX(), e.getY());
DefaultMutableTreeNode node = (DefaultMutableTreeNode)(selPath.getLastPathComponent());
//System.out.println(node.toString());//imprime todo el arbol respetando el click de cada nodo!

{

//System.out.println(" " + path.getLastPathComponent());
TreePath path = jTree1.getSelectionPath();
System.out.println("" + path.toString());



}
}

}
}
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ArbolClick().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JProgressBar jProgressBar1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTree jTree1;

// End of variables declaration//GEN-END:variables
private DefaultMutableTreeNode populate() {
Document o = null;
try {
o = DocumentHelper.parseText(getXml());
}
catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element rootElement = o.getRootElement();
DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootElement.getName());
iterate(rootElement, root);
//return new JTree(root);
return root;
}

private void iterate(Element o, DefaultMutableTreeNode root) {

for (Iterator hijos = o.elementIterator(); hijos.hasNext();){
Element element = (Element) hijos.next();
DefaultMutableTreeNode oRootChild = new DefaultMutableTreeNode(
element.getName());
root.add(oRootChild);
if (!element.isTextOnly()) {
iterate(element, oRootChild);
} else {
oRootChild.add(new DefaultMutableTreeNode(element.getText()));

}
}

}

private String getXml() {
String xml = "<esbusDesigner1>"
+ "<abuelo1><padre1><hijo1>hola</hijo1></padre1></abuelo1>"
+ "<abuelo2><padre2><hijo2>chau</hijo2></padre2></abuelo2>"
+ "<abuelo3><padre3><hijo3>chau</hijo3></padre3></abuelo3>"
+ "</esbusDesigner1>";
return xml;
}
}