Criar parametros para o meu TableModel

Aew galera to com uma duvida com eu crio parametros para o meu TableModel:

[code]package TableModels;

import javax.swing.table.AbstractTableModel;

public class ModeloHorarioEditavel extends AbstractTableModel {

    private String[] ColunasTabela = {"Nome", "Ent.1", "Sai.1", "Ent.2", "Sai.2", "Ent.3", "Sai.3", "Ent.4", "Sai.4"};
   
    private Object[][] dados = {};

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

    public int getRowCount() {
        return dados.length;
    }

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

    public Object getValueAt(int row, int col) {
        return dados[row][col];
    }

    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }

    public boolean isCellEditable(int row, int col) {
        //Note that the dados/cell address is constant,
        //no matter where the cell appears onscreen.
        if (col < 10) {
            return false;
        } else {
            return true;
        }
    }   

}[/code]

onde eu vou usar quero fazer igual ao DefaultTableModel quando eu uso o setModel(); me da as diferentes opçoes de parametros

no meu caso precisaria que meu modelo recebece o vetor pra popular a tabela pois ela eh dinamica muda toda hora como faço isso tentei criar um construtor mas da erro

Primeira coisa, eu aconselho você a usar um ArrayList ao invés de um Vector para carregar uma coleção no modelo.

Segunda coisa, você pode criar um método para adicionar/setar essa coleção no modelo.

Vou dar um exemplo:

// no inicio da classe
ArrayList<Pessoa> lista;

public void setLista(ArrayList<Pessoa> lista){
   this.lita = lista;
}

Agora na classe onde está a tabela com o modelo:


// Colocar o modelo na sua tabela
ModeloHorarioEditavel modelo = new ModeloHorarioEditavel();
suaTabela.setModel(model);
...
// Agora setando a nova colecao
ArrayList<Pessoa> lista = ALGUMA_COISA_QUE_TRAGA_A_LISTA;

((ModeloHorarioEditavel)suaTabela.getModel()).setLista(lista);

O seu TableModel é uma classe como outra qualquer. Você pode criar o método set que quiser.

javer, faltou disparar o evento dizendo que os dados da tabela mudaram no seu set:

[code]
// no inicio da classe
List<Pessoa> lista = new ArrayList<Pessoa>();

public void setLista(List<Pessoa> lista){
this.lista = new ArrayList<Pessoa>(lista);
//Precisamos avisar a tabela que os dados mudaram e que ela precisa ser redesenhada
fireTableDataChanged();
}[/code]

Também prefira criar as variáveis de coleção com o tipo da interface, não da classe concreta (List, no caso, ao invés de ArrayList direto). Isso permite substituir facilmente o tipo de lista.

Note também que estou fazendo uma cópia do ArrayList dentro do TableModel. Caso contrário, seria uma violação grave do encapsulamento da classe do TableModel e permitira, por exemplo, que seu usuário inserisse dados na lista de maneira arbitrária, sem que o model e o JTable tomassem conhecimento. O ideal, no caso de um model, seria criar também um método:

public void add(Pessoa pessoa) { lista.add(pessoa); fireTableRowsAdded(lista.size(), lista.size()); }

Você pode ver um exemplo de TableModel bastante inteligente aqui:
http://www.guj.com.br/posts/list/100793.java