AbstractTableModel

3 respostas
igor_jua

Galera, aprendi aqui no forum que a boa prática manda o programador trabalhar criando models para suas JTables…
Bem…criei meu model mas estou com alguns problemas…
1)Nem todas as colunas aparecem. Ela vai de “Lote” até "Nome Leit."
2)Uma exception fica sendo levantada de instantes em instantes…

public class ImportTableModel extends AbstractTableModel {

    private Vector<Import> list;
    private String[] colunas = {"Lote", "Local", "Lista", "Membro", "Cli.Rota", "Cli.Env",
        "Cli.Ret.", "Cli.Fat.", "Cli.Fat.Lido", "Cli.Fat.N.Lido", "Cli.N.Fat.",
        "Cli.Duv.", "Cli.Duv.Fat.", "Cli.Duv.N.Fat.", "Cli.Duv.Corrig.Manual",
        "Cli.Duv.Corrig.Autom.", "Cli.Duv.N.Corrig", "Qtd.Reimpressos",
        "Qtd.End.Postal", "Qtd.Agrupamento", "Qtd.Outros", "Coletor", "Empreit.",
        "Cód. Leit.", "Nome Leit.", "Estado", "Tipo da Rota", "Coletor Ass.Duv.",
        "Qtd. Impr. Duv.", "Estado de Impressão dos Duvidosos", "Responsavel Coelce", "Telefone responsavel Coelce",
        "Responsavel parceira", "Telefone responsavel parceira"}; 

    public ImportTableModel(Vector<Import> list, boolean model) {
        this();
        this.list.addAll(list);
    }

    public ImportTableModel() {
        list = new Vector<Import>();
    }

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

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

    public Object getValueAt(int rowIndex, int columnIndex) {
        if (rowIndex >= list.size()) {//tentei corrigir a exception com este comando, mas não funcionou
            return null;
        }
        Import imp = null;
        try {
            imp = list.get(rowIndex);
        } catch (Exception e) {
            return null;
        }
        switch (columnIndex) {
            case 0:
                return imp.getLote();
            case 1:
                return imp.getLocal();
            case 2:
                return imp.getLista();
            case 3:
                return imp.getMembro();
            case 4:
                return imp.getCliRota();
            case 5:
                return imp.getCliEnv();
            case 6:
                return imp.getCliRet();
            case 7:
                return imp.getCliFat();
            case 8:
                return imp.getCliFatLido();
            case 9:
                return imp.getCliFatNLido();
            case 10:
                return imp.getCliNFat();
            case 11:
                return imp.getCliDuv();
            case 12:
                return imp.getCliDuvFat();
            case 13:
                return imp.getCliDuvNFat();
            case 14:
                return imp.getCliDuvCorrgManual();
            case 15:
                return imp.getCliDuvCorrgAutoma();
            case 16:
                return imp.getCliDuvNCorrig();
            case 17:
                return imp.getQtdReimpressos();
            case 18:
                return imp.getQtdEndPostal();
            case 19:
                return imp.getQtdAgrupamento();
            case 20:
                return imp.getQtdOutros();
            case 21:
                return imp.getColetor();
            case 22:
                return imp.getEmpreit();
            case 23:
                return imp.getCodLeit();
            case 24:
                return imp.getNomeLeit();
            case 25:
                return imp.getEstado();
            case 26:
                return imp.getTipoRota();
            case 27:
                return imp.getColetorAssDuvidoso();
            case 28:
                return imp.getQtdImprDuv();
            case 29:
                return imp.getEstadoImpressaoDuv();
            default:
                return null;

        }
    }

    @Override
    public String getColumnName(int c) {
        if (c < 25) {
            return colunas[c];
        } else {
            return "";
        }

    }

    public Class getColumnClass(int c) {
        switch (c) {
            case 0:
                return Integer.class;
            case 1:
                return Integer.class;
            case 2:
                return Integer.class;
            case 3:
                return Integer.class;
            case 4:
                return Integer.class;
            case 5:
                return Integer.class;
            case 6:
                return Integer.class;
            case 7:
                return Integer.class;
            case 8:
                return Integer.class;
            case 9:
                return Integer.class;
            case 10:
                return Integer.class;
            case 11:
                return Integer.class;
            case 12:
                return Integer.class;
            case 13:
                return Integer.class;
            case 14:
                return Integer.class;
            case 15:
                return Integer.class;
            case 16:
                return Integer.class;
            case 17:
                return Integer.class;
            case 18:
                return Integer.class;
            case 19:
                return Integer.class;
            case 20:
                return Integer.class;
            case 21:
                return Integer.class;
            case 22:
                return String.class;
            case 23:
                return String.class;
            case 24:
                return String.class;
            case 25:
                return String.class;
            case 26:
                return String.class;
            case 27:
                return String.class;
            case 28:
                return String.class;
            case 29:
                return String.class;
            default:
                return null;

        }
    }
}

Como eu posso corrigir estes 2 erros?

3 Respostas

ViniGodoy

Pode postar o stack trace completo da exception? Provavelmente em algum lugar por lá vai ter uma classe sua…

Outra coisa, troca aquele Vector ali por um ArrayList. Não vai fazer diferença no seu erro, mas o Vector não deve ser usado desde o java 1.2.

igor_jua

Vini o StackTrace não possui nenhuma classe minha…
Reanalisando o meu código vi que a quantidade de colunas que eu setei no método getcolumnName estava menor que a quantidade que eu estava passando. Com isto a exception parou de ser levantada.
Porém o primeiro problema ainda continua…tenho no total 34 colunas(tive que criar mais 4 além das que já estão no exemplo).O que acontece é que as 4 últimas colunas não estão aparecendo.

Por que será?

Ah…Em um outro post vc me explicou sobre o desuso do Vector…Mas como já estava implementado desta maneira optei por deixar assim…
Mas nas novas implementações já estou trabalhando da maneira correta!
:smiley:

ViniGodoy

Mas não aparece o que? O nome da coluna? Ou a coluna inteira?

Falei do Vector pq nessa sua classe é só substituir diretamente.

Criado 25 de agosto de 2010
Ultima resposta 26 de ago. de 2010
Respostas 3
Participantes 2