ArrayList de Objetos e JTable[RESOLVIDO]

Pessoal, estou com uma dúvida, e não sei por onde começar.

Peguei essa classe aqui no fórum que manipula um modelo pra JTable, mas no meu arraylist eu tenho vários objetos do mesmo tipo e no método addRow ele tem como argumentos:

public void addRow( String [] dadosLinha){ getLinhas().add(dadosLinha); int linha = getLinhas().size()-1; fireTableRowsInserted(linha,linha); return; }

Não sei como eu posso adicionar meus objetos na JTable.
Essa é a minha classe de onde tento adicionar os objetos:

[code]public void preencheTabela(){
ArrayList lista = main.listaTodos();
String[] cabecalho = {“CODIGO”,“NOME”,“ENDERECO”,“D.NASC.”};

    ModeloTabela mo = new ModeloTabela(lista, cabecalho);
    
    jtPesquisarDizimistas.setModel(mo);
}[/code]

Esta classe, peguei aqui no fórum.

[code]package visao;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.table.AbstractTableModel;

public class ModeloTabela extends AbstractTableModel{

private ArrayList linhas = null;
private String [] colunas = null;



public ModeloTabela(ArrayList dados, String[] colunas){
	setLinhas(dados);
	setColunas(colunas);
}


public int getColumnCount() {
    return getColunas().length;
}


public int getRowCount() {
    return getLinhas().size();
}


public Object getValueAt(int rowIndex, int columnIndex) {
	// Obtem a linha, que é uma String []
	String [] linha = (String [])getLinhas().get(rowIndex);
	// Retorna o objeto que esta na coluna
	return linha[columnIndex];
}

public String[] getColunas() {return colunas;}
public ArrayList getLinhas() {return linhas;}
public void setColunas(String[] strings) {colunas = strings;}
public void setLinhas(ArrayList list) {linhas = list;}


public void setValueAt(Object value, int row, int col){
	// Obtem a linha, que é uma String []
	String [] linha = (String [])getLinhas().get(row);
	// Altera o conteudo no indice da coluna passado
	linha[col] = (String)value;
	// dispara o evento de celula alterada
	fireTableCellUpdated(row,col);
}


public void addRow( String [] dadosLinha){
	getLinhas().add(dadosLinha);
	// Informa a jtable de que houve linhas incluidas no modelo
	// COmo adicionamos no final, pegamos o tamanho total do modelo
	// menos 1 para obter a linha incluida.
	int linha = getLinhas().size()-1;
	fireTableRowsInserted(linha,linha);
	return;
}


public void removeRow(int row){
	getLinhas().remove(0);
	// informa a jtable que houve dados deletados passando a
	// linha reovida
	fireTableRowsDeleted(row,row);
}


public boolean removeRow(String val, int col){
	// obtem o iterator
	Iterator i = getLinhas().iterator();
	int linha = 0;
	// Faz um looping em cima das linhas
	while(i.hasNext()){
		// Obtem as colunas da linha atual
		String[] linhaCorrente = (String[])i.next();
		linha++;
		// compara o conteudo String da linha atual na coluna desejada
		// com o valor informado
		if( linhaCorrente[col].equals(val) ){
			getLinhas().remove(linha);
			// informa a jtable que houve dados deletados passando a
			// linha removida
			fireTableRowsDeleted(linha,linha);
			return true;
		}
	}

	return false;
}


public String getColumnName(int col){
	return getColunas()[col];
}

}
[/code]

Olha aqui!

http://www.guj.com.br/posts/list/116038.java

Att.

Marco A.

Mas nesse código do cara ai, cade o método de addRows?

O código do “cara aí” é meu… rsrsrs

Pra que vc quer o método AddRow?

Tá tudo no código, nem precisa alterar nada (a não ser o seu bean)

Qualquer coisa retorna

Abraço

M.A.

[quote=fanama]O código do "cara aí" é meu… rsrsrs

Pra que vc quer o método AddRow?

Tá tudo no código, nem precisa alterar nada (a não ser o seu bean)

Qualquer coisa retorna

Abraço

M.A.[/quote]

Afi é mesmo!!! Faltou pensar um pouquinho :lol:

[code]public void preencheTabela(){
//Retorna um array com todos os objetos do banco.
ArrayList lista = main.listaTodos();

    //Esse aux deve ter vários vetores de String.
    ArrayList aux = new ArrayList();

    //Cabecalho da tabela.
    String[] cabecalho = new String[] {"CODIGO","NOME","ENDERECO","D.NASC."};

    int i = 0;
    while(i < lista.size()){

        novoDizimista = new Dizimista();
        novoDizimista = (Dizimista) lista.get(i);

        String codigo = String.valueOf(novoDizimista.getCodigo());
        String nome = novoDizimista.getNome();
        String end = novoDizimista.getEndereco();
        String data = novoDizimista.getData();

        //Dados que estarao na tabela.
        String[] dados = {codigo, nome, end, data};

        //Agora o aux tem varios vetores de String.
        aux.add(new String[]{codigo, nome, end, data});

        //Passando o conteudo e o cabecalho da tabela.
        ModeloTabela modelo = new ModeloTabela(aux, cabecalho);

        //Usando o modelo.
        jtPesquisarDizimistas.setModel(modelo);

        //Liberando objetos.
        modelo = null;
        novoDizimista = null;
        i++;
    }
}

[/code]

Galera, VALEU, me quebraram um galhão também…
Obrigado

Já que você venceu a primeira barreira, que é a de criar um TableModel próprio, faça um modelo que trabalhe diretamente com sua lista de Dizimista. Isso vai deixar o código mais claro e evitar casts. Veja um exemplo:
http://www.guj.com.br/posts/list/132698.java#714736

Não faz muito sentido usar um modelo como o que você postou, já que ele é uma cópia incompleta do DefaultTableModel. O default já é ruim, pior ainda usar uma versão inferior a ele, cuja manutenção ficará ainda por sua conta…