[Resolvido]Obter o index de um JTree de modo generico

Ola, estou tentando obter o Index de um NO selecionado em um Jtree.

Achei um exemplo que mostra como obter o index do Nó selecionado, porem, só funciona se ele for filho do NO Root. :(, alguem pode me dizer como mudar pra ele trazer o index do nó, sem ser apenas o do root?

Minha situação é essa:

Root
----[color=blue]Nivel 0[/color]
--------SubNivel 0
--------SubNivel 1
--------SubNivel 2
----[color=blue]Nivel 1[/color]
--------SubNivel 0
--------SubNivel 1
----[color=blue]Nivel 2[/color]
--------SubNivel 0
----[color=blue]Nivel 3[/color]
--------SubNivel 0
--------SubNivel 1

Eu selecionando o Nivel X, funciona certinho, ele traz o index correto.
Mas quando eu clico em um SubNivelX, ele traz -1 :(, acredito que seja por causa da [color=olive]linha 31[/color] o [color=darkblue]getRoot()[/color].

Se der pra fazer um método genérico que traga o indice dele referente ao pai, nao consegui :(. Pode ser outro metodo a parte pra trazer o terceiro nivel se nao for possível…

    private void gerarArvore() {
        root = new DefaultMutableTreeNode("Root");
        arvore = new JTree(root);
        arvore.setRootVisible(false);
        arvore.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        /**
         * Evento ao clicar na arvore
         */
        arvore.addTreeSelectionListener(new TreeSelectionListener() {

            @Override
            public void valueChanged(TreeSelectionEvent e) {
                mostrarMensagem(getTreeSelecionIndex(e), getContentPane());
            }
        });

        arvoreModelo = (DefaultTreeModel) arvore.getModel();

        scrollArvore = new JScrollPane(arvore);
        splitArvoreJanelas.setTopComponent(scrollArvore);
        splitArvoreJanelas.updateUI();
    }

    private String getTreeSelecionIndex(TreeSelectionEvent e) {
        TreePath tp = e.getNewLeadSelectionPath();
        if (tp != null) {
            // Get the last component of the selected node path. This is cast to a DefaultMutableTreeNode
            DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) tp.getLastPathComponent();
            DefaultTreeModel dtm = (DefaultTreeModel) arvore.getModel();    // get the tree model
            //now get the index of the selected node in the DefaultTreeModel
            return dtm.getIndexOfChild(dtm.getRoot(), dmtn) + "";
        }else{
            //JOptionPane.showMessageDialog(null, "No node selected", "Error", JOptionPane.ERROR_MESSAGE);
            return "-1";
        }
    }

Vlw …

Fala sério, foi so eu postar que eu achei sahusahushuashua… vlw mesmo assim

é so trocar do DefaultTreeModel para o DefaultMutableTreeNode e usar o getParent()
dtm.getRoot() por dmtn.getParent()

//Codigo anterior
return dtm.getIndexOfChild(dtm.getRoot(), dmtn) + "";

//Codigo atual :)
return dtm.getIndexOfChild(dmtn.getParent(), dmtn) + "";