12
I searched some sites about how to fill a table in java and many suggested to avoid the DefaultTableModel?
Why should one avoid using this class for more complex object cases? What does its use imply?
12
I searched some sites about how to fill a table in java and many suggested to avoid the DefaultTableModel?
Why should one avoid using this class for more complex object cases? What does its use imply?
2
This website (Matheus Piscioneri) summarized the reasons very well.
Vector and not List);Uses insecure cases (for example in the method convertToVector(Object[] anArray) where : Vector<Object> v = new Vector<Object>(anArray.length);
for (Object o : anArray) {
    v.addElement(o);
};
Force that you have to display unnecessary information (such as the ID) in the table, or control the ID in a separate list;
A practice that Vinigodoy always recommended.
2
Actually, the use of Defaulttable is more complicated. And maintenance ends up being more time consuming too.
When I was looking at it, I used this example and it helped me understand it very well.
Maybe I can help you.
package nome_do_pacote;
import br.com.agenda.modelo.*;
import java.util.*;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class ContatoTableModel extends AbstractTableModel{
    public static final int COLUNA_CODIGO = 0;
    public static final int COLUNA_NOME = 1;
    public static final int COLUNA_EMAIL = 2;
    public static final int COLUNA_FIXO = 3;
    public static final int COLUNA_CELULAR = 4;
    private List<Contato> listarContatos;
public ContatoTableModel(List<Contato> l){
    this.listarContatos = new ArrayList<Contato>(l);
}
public int getRowCount(){
    return listarContatos.size();
}
public int getColumnCount(){
    return 5;
}
public Object getValueAt(int linhas, int colunas){
    Contato cont  = this.listarContatos.get(linhas);
    if(colunas == COLUNA_CODIGO) return cont.getCodigo();
    if(colunas == COLUNA_NOME) return cont.getNome();
    if(colunas == COLUNA_EMAIL) return cont.getEmail();
    if(colunas == COLUNA_FIXO) return cont.getFixo();
    if(colunas == COLUNA_CELULAR) return cont.getCelular();
    return "";
}
public String getColumnName(int colunas){
    if(colunas == COLUNA_CODIGO) return "Código";
    if(colunas == COLUNA_NOME) return "Nome";
    if(colunas == COLUNA_EMAIL) return "E-mail";
    if(colunas == COLUNA_FIXO) return "Telefone";
    if(colunas == COLUNA_CELULAR) return "Celular";
    return "";
}
public Contato get(int linhas){
    return listarContatos.get(linhas);
}
}
Defaulttable’s on the Oracle website, if it was that bad, it wouldn’t be there. For beginners, I find it simple to use using IDE like netbeans for example.
Fanaticism-free :)
Browser other questions tagged java swing
You are not signed in. Login or sign up in order to post.