Como a JTree chama o método getChild(Object parent, int index);

Olá gujeiros,

tudo bom?!

Estou com uma dúvida, criei uma JTree e uma outra classe implementando TreeModel coloquei o modelo dentro da JTree, assim: JTree arv = new JTree(modelo); que é a variável de referência da classe aonde estou implementando o TreeModel, gostaria de saber como a JTree chama os métodos da classe, pois não sei como faço para inserir os nós dentro dela…

Códigos:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package arvore;

/**
 *
 * @author Modelagem
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.*;
import javax.swing.border.Border;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

public class Arvore extends JFrame{
    JTree arvore;
     ModeloArvore  modelo =new ModeloArvore(new File("C:\\"));
    
    public Arvore() {
       Container tela = getContentPane();
       tela.setLayout(null);
       
       JPanel arv = new JPanel(new FlowLayout(FlowLayout.LEFT));
       JPanel bot = new JPanel();
       
       arv.setBorder(javax.swing.BorderFactory.createTitledBorder("Borda"));
       arv.setSize(800, 400);
       
       
       arv.setBounds(0,0,800,400);
       bot.setBounds(0,420,200,200);
       
      
       JScrollPane painelRolagem = new JScrollPane();
        arvore  = new JTree(modelo);
       
        
        
        
  
        arv.add(arvore);
        
       JButton botao01 = new JButton("ADD");
       botao01.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              adicionarArvore();
          } 
       });
       JButton botao02 = new JButton("Remover");
       botao02.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              removerArvore();
          } 
       });
       JButton botao03 = new JButton("Ordenar por nome Crescente");
       botao03.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
             File r = new File("C:\\");
             new ModeloArvore(r,"nome");
          } 
       });
       JButton botao04 = new JButton("Odenar por nome Decrescente");
       botao04.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              File r = new File("C:\\");
             new ModeloArvore(r,"nomedesc");
          } 
       });
       JButton botao05 = new JButton("Ordenar por data crescente");
       botao05.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              File r = new File("C:\\");
             new ModeloArvore(r,"data");
          } 
       });
      JButton botao06 = new JButton("Ordenar por data decrescente");
       botao02.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              File r = new File("C:\\");
             new ModeloArvore(r,"datadesc");
          } 
       });
       
       
       
       bot.add(botao01);
       bot.add(botao02);
      
       
       tela.add(arv);
       tela.add(bot);
       
       setSize(800,600);
       setVisible(true);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public void adicionarArvore() {
        TreePath caminho = arvore.getSelectionPath();
        if(caminho == null) {
            new ModeloArvore(new File("C:\\"),"diretorio");
        }
        else {
            
            String path = caminho.toString();
            new ModeloArvore(new File(path),"diretorio");
        }
    }
    public void removerArvore() {
        
    }
  
    
    
    
    
    
    public static void main(String[] args) {
        // TODO code application logic here
        new Arvore();
        
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package arvore;

import java.io.File;
import java.text.Collator;
import java.util.*;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

/**
 *
 * @author Modelagem
 */

    
public class ModeloArvore implements TreeModel {
    private List<TreeModelListener> listeners = new ArrayList<TreeModelListener>();  
    File raiz;
    String ordenacao;
    public List<String> arquivos = new ArrayList<String>();
    String filho;
    
    public ModeloArvore(File r,String no) {
        raiz = r;
        filho = no;
    }
    
    /*public ModeloArvore(File r,String ord) {
       this.ordenacao = ord;
       raiz = r;
    }*/

    ModeloArvore(File r) {
        raiz = r;
    }
    
 
    
    @Override
    public Object getRoot() {
        return raiz;
    }

    @Override
    public Object getChild(Object parent, int index) {
        File diretorio = (File) parent;
        String[] listar = diretorio.list();
        for(int i = 0; i < listar.length;i++) {
            arquivos.add(listar[i]);
        }
        System.out.println("oooo");
        return arquivos.get(index);
    }

    @Override
    public int getChildCount(Object parent) {
        File arquivo = (File)parent;
        
        if(arquivo.isDirectory()) {
           String[] lista = arquivo.list();
           
        }
        
        return 0;
        
    }

    @Override
    public boolean isLeaf(Object node) {
        File folha = (File) node;
        return folha.isFile();
    }

    @Override
    public void valueForPathChanged(TreePath path, Object newValue) {
        
    }

    @Override
    public int getIndexOfChild(Object parent, Object child) {
        File pai = (File) parent;
        File filho = (File) child;
        
        String[] crianca = filho.list();
        for(int i =0; i < crianca.length;i++) {
            if(filho.getName().equals(crianca[i])) {
                return i;
            }
        }
        return -1;
    }

    @Override
    public void addTreeModelListener(TreeModelListener l) {
       listeners.add(l);
    }

    @Override
    public void removeTreeModelListener(TreeModelListener l) {
       listeners.remove(l);
    }

 
     public class Arquivo 
 {
     /*Criamos essa classe para ordenar os valores tempo e nome, para que os valores sejam
      sempre o mesmo na hora de acessá-los*/
     long tempo;
     String nome;
     private List<String> arquivos = new ArrayList<String>();
        public Arquivo(String nome,long tempo) 
        {
            this.tempo = tempo;
            this.nome = nome;
            arquivos.add(nome);
            System.out.println("Arquivo");
            
        }
        
       public String getNome(){
           return nome;
       }
               
        
        public long getTempo() {
            return tempo;
        }

 }
 
 private class Ordenacao implements Comparator<Arquivo>
 {
/*Essa classe foi criada para ordenar o arquivoLista e gerar na árvore a ordenação
 por nome e data*/
     
 private String tipoOrdenacao;
 
        public Ordenacao(String tipoOrdenacao) 
        {
            this.tipoOrdenacao = tipoOrdenacao;
        }
  
    @Override
        public int compare(Arquivo a1, Arquivo a2) 
            /*Método que vai gerar um inteiro, negativo <, zero = e posivo >*/
        {
            if(tipoOrdenacao.startsWith("data")) 
            {
                if(a1.tempo>a2.tempo) {
                return 1;
                }
                if(a1.tempo<a2.tempo) {
                return -1;
                }
                return 0;
            }
            if(tipoOrdenacao.startsWith("nome")) 
            {
                return a1.nome.compareTo(a2.nome);
            }       
            
            return 0;
        }
    
    }
 
          private class TreeFile extends File 
  {
    public TreeFile(File parent, String child) 
    {
      super(parent, child);
      System.out.println("Recusivo");  
    }

      

    public String toString() 
    {
      return getName();
    }
  }
} 

abraço,