Populando TableModel

olá pessoal do Fórum

seguindo algumas dicas do pessoal do fórum criei meu proprio TableModel mais agora não consigo preencher ele com o retorno da minha List

segue o cod até o momento.

view plaincopy to clipboardprint?

    import java.awt.BorderLayout;  
    import java.awt.event.ActionEvent;  
    import java.awt.event.ActionListener;  
    import java.text.DateFormat;  
    import java.text.SimpleDateFormat;  
    import java.util.Date;  
    import java.util.List;  
      
    import javax.swing.JButton;  
    import javax.swing.JComboBox;  
    import javax.swing.JFormattedTextField;  
    import javax.swing.JFrame;  
    import javax.swing.JLabel;  
    import javax.swing.JOptionPane;  
    import javax.swing.JPanel;  
    import javax.swing.JScrollPane;  
    import javax.swing.JTable;  
    import javax.swing.event.TableModelEvent;  
    import javax.swing.event.TableModelListener;  
    import javax.swing.text.DateFormatter;  
      
      
    /** 
    * Faremos essa classe implementar TableModelListener para visualizar os eventos 
    * que ocorrem. 
    */  
    public class ViewConta extends JFrame implements TableModelListener {  
      
        private static final long serialVersionUID = 1L;  
        private TipoTableModel modelo;  
        private Conta conta;  
        private ContaTipos ct;  
        private JTable tabela;  
        private JScrollPane scrollPane;  
        private JButton botaoAdicionar;  
        private JButton botaoRemover;  
        private JButton botaoLimpar;  
        private JLabel  lCampo1;  
        private JFormattedTextField campo1;  
        //private JTextField campo1;  
        private JLabel  lCampo2;  
        private JFormattedTextField campo2;  
        private JComboBox combo;      
        //private JTextField campo2;   
      
        public ViewConta() {  
            instanciaComponentes();  
            adicionaComponentes();  
            ajustaJanela();  
        }  
      
          
          
        private void instanciaComponentes() {  
            conta = new Conta();          
            modelo = new TipoTableModel();  
            // aqui está a grande jogada!         
            modelo.addTableModelListener(this);  
            // ONDE IRÁ PASSAR OS DADOS PARA CONSULTA NO SELECT  
            //modelo.adicionaLista(TestaConexao.getLista("01/01/2009","31/12/2009","RCV"));  
            //modelo.adicionaLista(ClienteDAO.listarClientes());  
            // mudamos o modelo de nossa tabela  
              
            DateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
            DateFormatter df = new DateFormatter(format);  
              
            tabela = new JTable();  
            //tabela.setModel(modelo);  
            scrollPane = new JScrollPane();  
            scrollPane.setViewportView(tabela);  
              
            lCampo1 = new JLabel();  
            lCampo1.setText("Data Inicial:");         
            campo1 = new JFormattedTextField(df);  
            campo1.setValue(new Date());  
            //campo1 = new JTextField(10);  
            //campo1.getText();  
              
            lCampo2 = new JLabel();  
            lCampo2.setText("Data Final:");  
            campo2 = new JFormattedTextField(df);  
            campo2.setValue(new Date());  
            //campo2 = new JTextField(10);  
            //campo2.getText();  
              
            combo = new JComboBox();  
              
            for (String tipo : conta.getLista()) {  
                  
                combo.addItem(tipo);  
                  
            }  
              
            //combo.addItem("RCV");  
            //combo.addItem("SND");  
              
            botaoAdicionar = new JButton();  
            botaoAdicionar.setText("Buscar");  
            botaoAdicionar.addActionListener(new ActionListener() {  
                  
                public void actionPerformed(ActionEvent e) {  
                    //nesse caso, simplesmente adiciona um novo cliente aleatório  
                    List<Qtd> array = ct.contaTipo();                           
                    if (array.size()!= 0){                    
                        modelo.adicionaLista(array); // [i]nesta Linha me retorna o erro[/i]                      
                    }else{  
                        JOptionPane.showMessageDialog(null, "Não há resultados");                                                         
                    }  
                                  
                          
                }  
            });  
              
            botaoRemover = new JButton();  
            botaoRemover.setText("Remover");  
            botaoRemover.addActionListener(new ActionListener() {  
                @Override  
                public void actionPerformed(ActionEvent e) {  
                    // remove o cliente selecionado  
                /*  int indice = tabela.getSelectedRow(); 
                    if (indice != -1) { 
                        modelo.remove(indice); 
                    }*/  
                }  
            });  
            botaoLimpar = new JButton();  
            botaoLimpar.setText("Limpar");  
            /*botaoLimpar.addActionListener(new ActionListener() { 
                @Override 
                public void actionPerformed(ActionEvent e) { 
                    modelo.limpaLista(); 
                } 
            });*/  
        }  
      
        private void adicionaComponentes() {  
            add(scrollPane);  
            JPanel panel = new JPanel();          
            panel.add(lCampo1);       
            panel.add(campo1);  
            panel.add(lCampo2);  
            panel.add(campo2);  
            panel.add(combo);  
            panel.add(botaoAdicionar);  
            //panel.add(botaoRemover);  
            panel.add(botaoLimpar);       
            add(panel, BorderLayout.SOUTH);  
        }  
      
        private void ajustaJanela() {  
            setTitle("Clientes");  
            pack();  
            setLocationRelativeTo(null);  
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);  
        }  
          
           
      
        @Override  
        public void tableChanged(TableModelEvent e) {  
            // quando a estrutura de dados muda, imprimimos a informação. Fazer a  
            // persistência no banco seria o comportamento realista desse método.  
            String tipo;  
            switch (e.getType()) {  
            case TableModelEvent.DELETE:  
                tipo = "DELETE";  
                break;  
            case TableModelEvent.INSERT:  
                tipo = "INSERT";  
                break;  
            case TableModelEvent.UPDATE:  
                tipo = "UPDATE";  
                break;  
            default:  
                tipo = "?";  
                break;  
            }  
            // mostra uma mensagem:  
            // TIPO_DE_EVENTO: linhaInicial-linhaFinal, coluna  
            // -1 representa todas as linhas ou todas as colunas  
            // 2147483647 representa possível mudança em toda a tabela  
            System.out.printf("%s: %d-%d, %d%n", tipo, e.getFirstRow(), e  
                    .getLastRow(), e.getColumn());  
        }  
      
    }  


    import java.util.ArrayList;  
    import java.util.Iterator;  
    import java.util.List;  
      
    import javax.swing.table.AbstractTableModel;  
    import javax.swing.table.TableModel;  
      
    public class TipoTableModel extends AbstractTableModel {  
      
        private static final long serialVersionUID = 1L;  
      
        /** 
         * Essa lista armazenará os objetos do tipo {@link Cnpj} atualmente 
         * exibidos na tablela. 
         */  
        private List<Qtd> clientes;  
      
        // ==============================================================  
        // Construtores.  
        // ==============================================================  
      
        /** 
         * Constutor que simplesmente instancia o nosso {@link List} que usaremos 
         * para guardar os valores. 
         */  
        public TipoTableModel() {  
            // no construtor, instanciamos o List  
            clientes = new ArrayList<Qtd>();  
        }  
      
        /** 
         * Criamos um construtor de conveniência para já popular a lista. 
         *  
         * @param lista 
         *            a lista de clientes a ser adicionada. 
         */  
        public TipoTableModel(List<Qtd> qtds) {  
            this();  
            clientes.addAll(qtds);  
        }  
      
        // ==============================================================  
        // Métodos implementados.  
        // ==============================================================  
      
        @Override  
        public Class<?> getColumnClass(int coluna) {  
            // todas as colunas representam uma String  
            return String.class;  
        }  
      
        @Override  
        public int getColumnCount() {  
            // esse método deve retornar o número de colunas. No caso, 3 (uma para o  
            // nome, uma para o sobrenome e uma para o apelido).  
            return 2;  
        }  
      
        @Override  
        public String getColumnName(int coluna) {  
            // vamos retornar o nome de cada coluna  
            switch (coluna) {  
            case 0:  
                return "CNPJ"; // o nome da primeira coluna  
            case 1:  
                return "Quantidade"; // o nome da segunda  
            case 2:  
                //return "Status";  e o da terceira  
            default:  
                return ""; // isso nunca deve ocorrer, pois temos só 3 colunas  
            }  
        }  
      
        @Override  
        public int getRowCount() {  
            // retorna o número de linhas, ou seja, a quantidade de entradas na  
            // nossa lista.  
            return clientes.size();  
        }  
      
        @Override  
        public Object getValueAt(int linha, int coluna) {  
            // vai retornar o valor de determinada célula. A linha representa a  
            // posição do Cliente na nossa lista e a coluna vai ser: 1 - nome, 2 -  
            // sobrenome e 3 - apelido  
            // primeiro vamos pegar o Cliente da linha  
            Qtd qtd = (Qtd)clientes.get(linha);  
            // façamos um switch  
            switch (coluna) {  
            case 0:  
                return qtd.getCnpj(); // retornamos o nome  
            case 1:  
                return qtd.getQtd(); // retornamos o sobrenome  
            case 2:  
                //return qtd.getHora(); e o apelido  
            default:  
                return null; // isso nunca deve ocorrer, pois temos só 3 colunas  
            }  
        }  
      
        @Override  
        public boolean isCellEditable(int rowIndex, int columnIndex) {  
            // nesse caso, todas as células são editáveis  
            return true;  
        }  
      
        @Override  
        public void setValueAt(Object valor, int linha, int coluna) {  
            // aqui devemos atualizar o valor de nossos Clientes  
            // vemos em qual linha ele está  
            Qtd qlq = clientes.get(linha);  
            // e vemos o que será atualizado  
            switch (coluna) {  
            case 0:  
                qlq.setCnpj(valor.toString()); // mudamos o nome  
                break;  
            case 1:  
                qlq.setQtd(valor.toString()); // mudamos o sobrenome  
                break;  
            case 2:  
                //qlq.setHora(valor.toString()); e o apelido  
                break;  
            }  
            // é importante notificar os listeners a cada alteração  
            fireTableDataChanged();  
        }  
      
        // ==============================================================  
        // Até aqui seria o mínimo necessário para um TableModel funcional, mas  
        // ainda não há métodos para adicionar, remover ou resgatar objetos. Vamos  
        // criá-los.  
        // ==============================================================  
      
        /** 
         * Adiciona um novo {@link Cliente} e notifica os listeners que um novo 
         * registro foi adicionado. 
         */  
        public void adiciona(Qtd c) {  
            clientes.add(c);  
            // informamos os listeners que a linha (size - 1) foi adicionada  
            fireTableRowsInserted(clientes.size() - 1, clientes.size() - 1);  
        }  
      
        /** 
         * Similar ao {@link #adiciona(Cliente)}, porém para remover. Recebe o 
         * índice do cliente a ser removido. Se não souber o índice, use o método 
         * {@link #getIndice(Cliente)} antes. 
         */  
        public void remove(int indice) {  
            clientes.remove(indice);  
            fireTableRowsDeleted(indice, indice);  
        }  
      
        /** 
         * Retorna o índice de determinado cliente. 
         */  
        public int getIndice(Qtd cnpjs) {  
            return clientes.indexOf(cnpjs);  
        }  
      
        /** 
         * Adiciona todos os clientes na lista à este modelo. 
         */  
        public void adicionaLista(List<Qtd> lista) {  
                              
                int i = clientes.size();              
                clientes.addAll(lista);  
                fireTableRowsInserted(i, i + lista.size());               
              
        }  
      
        /** 
         * Esvazia a lista. 
         */  
        public void limpaLista() {  
            int i = clientes.size();  
            clientes.clear();  
            fireTableRowsDeleted(0, i - 1);  
        }  
      
    }  

    import java.io.File;  
    import java.util.ArrayList;  
    import java.util.Iterator;  
    import java.util.List;  
    import java.util.Map;  
    import java.util.TreeMap;  
      
    public class ContaTipos {  
        @SuppressWarnings("unchecked")    
        public  List<Qtd> contaTipo(){  
            Qtd qtd = new Qtd();          
            String tipoQueQuero = "NotaFiscal";  
            File file = new File("C:\\ArqDivir\\");  
          
            File[] files = file.listFiles();  
              
            List<String> listaQtdTipo = new ArrayList<String>();  
            Map<String, Integer> map = new TreeMap<String, Integer>();        
            List<Qtd> qtds = new ArrayList<Qtd>();    
            try{  
                                          
                for (File file2 : files) {  
                      
                    String sufix[] = file2.getName().split("\\.");  
                      
                    //listaQtdTipo.add(sufix[2]);  
                    if(sufix[2].equals(tipoQueQuero)){  
                        listaQtdTipo.add(sufix[3]);  
                    }     
                }               
                    
                for (String nome : listaQtdTipo) {    
                      
                    Integer count = map.get(nome);    
                    if (count == null)    
                       count = 0;    
                    map.put(nome, count+1);           
                      
                }  
                              
                                                      
                for (String nome : map.keySet()) {    
                      
                    //map.put(nome, map.get(nome));  
                  
                    qtd.setCnpj((String)nome);  
                    qtd.setQtd((String)map.get(nome).toString());  
                      
                    qtds.add(qtd);  
                      
                    System.out.printf("O CNPJ %s se repetiu %s vezes.", nome, map.get(nome));                        
                    System.out.println();   
                      
                }             
                  
            }catch (Exception e) {  
                // TODO: handle exception  
            }  
              
            return qtds;  
              
        }  
          
    }  

achei varias explicações para o meu problema mais não consegui resolver por isso criei o tópico se alguém conseguir me ajudar agradeço

abraços

Já rodou esse código num depurador? Me parece que o erro é no método que obtém os clientes, não no model.