[RESOLVIDO]Ajuda com AbstractTableModel

1 resposta
fejohann

Ola pessoal, estou tentando implementar AbstractTableModel no meu projeto…

Preciso, por hora, criar uma tabble com 5 colunas, “Veiculo”,“Status”,“Prioridade”,“Data”,“Seleciona”…

onde Seleciona é um Boolean.class…
até ai tudo bem, mas estou tendo dificuldades em setar os dados para a tabela…
alias, os exemplos que vi e li até agora, não me ajudaram muito, pois normalmente eram fixos, e não estou conseguindo implementar…

segue meus codigos:

public class Modelo extends AbstractTableModel {
      private String[] colunas = {"Veiculo","Status","Prioridade","Data","Seleciona"};
      public Object[][][][][] conteudo;

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

      public int getRowCount(){
          Agenda_de_Manutencao_de_VeiculoDAO dao = new Agenda_de_Manutencao_de_VeiculoDAO();
          return dao.listar().size();
        //return conteudo.length;
      }

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

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

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

      public boolean isCellEditable(int row, int col) {
        return true;
      }

      public void setValueAt(Object value, int row, int col) {
        conteudo[row][col] = (Object[][][][][])value;
        fireTableCellUpdated(row, col);
      }
public void Listar(){
            Agenda_de_Manutencao_de_VeiculoDAO dao = new Agenda_de_Manutencao_de_VeiculoDAO();
            int row=0, col=0;
            for (Agenda_de_Manutencao_de_Veiculo agenda : dao.listar()) {
                jTable1.setValueAt(new Object[][][][][]{""+agenda.getVeiculo().getVei_cod(),"" + agenda.getStatus().getSta_nome(),"" + agenda.getPrioridade().getPri_nome(),
                                   "" + agenda.getAge_man_vei_dia(),new Boolean (false)},row,col);
                /*for(col=0;col<5;col++){
                if(col==0){
                    jTable1.setValueAt(""+agenda.getVeiculo().getVei_cod(),row,col);
                }
                if(col==1){,
                    jTable1.setValueAt("" + agenda.getStatus().getSta_nome(),row,col);
                }
                if(col==2){
                    jTable1.setValueAt("" + agenda.getPrioridade().getPri_nome(),row,col);
                }
                if(col==3){
                    jTable1.setValueAt("" + agenda.getAge_man_vei_dia(),row,col);
                }     
                if(col==4){
                    jTable1.setValueAt(new Boolean (false),row,col);
                }*/
                                           
            }
            row++;
        }

e chamo esse método para "alimentar a tabela…
Obrigado pela ajuda desde já!

1 Resposta

fejohann

To tentando, acho que agora falta pouco…

refiz parte do codigo, esta na tela, mas não aparece os dados, vejo no monitor que ele faz as buscas, mas não imprime nada!!!

alguém me ajude… onde to errando!!!

minha classe do abstract

public class ModeloTable extends AbstractTableModel {
      Agenda_de_Manutencao_de_VeiculoDAO dao = new Agenda_de_Manutencao_de_VeiculoDAO();
      private List<Agenda_de_Manutencao_de_Veiculo> agenda = dao.listar() ;

    public ModeloTable() {
                    agenda = new ArrayList<Agenda_de_Manutencao_de_Veiculo>();
            }

    public ModeloTable(List<Agenda_de_Manutencao_de_Veiculo> lista) {  
           this.agenda.addAll(lista);  
       }  
    public Class<?> getColumnClass(int coluna) {
        if(coluna== 4){
            return Boolean.class;
        }
        else
            return String.class;
    }
    public int getRowCount(){
        return agenda.size();
    }
    public int getColumnCount(){
        return 5;
    }
    public String getColumnName(int colunas){
        switch (colunas) {
        case 0 : return "Veiculo";
        case 1: return "Status";
        case 2: return "Prioridade";
        case 3: return "Data";
        case 4: return "Seleciona";
        default: return "";
        }
    }

    public Object getValueAt(int linhas, int colunas){
        Agenda_de_Manutencao_de_Veiculo age  = agenda.get(linhas);
        System.out.print("CHEGOU AQUI!!!");
        switch (colunas){
        case 0: return age.getVeiculo().getVei_cod(); 
        case 1: return age.getStatus().getSta_nome();
        case 2: return age.getPrioridade().getPri_nome();
        case 3: return age.getAge_man_vei_dia();
        case 4: return new Boolean (false);
        default: return "";
        }
    }
    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á
                    Agenda_de_Manutencao_de_Veiculo age = agenda.get(linha);
                    // e vemos o que será atualizado
                    switch (coluna) {
                    case 0:
                            age.setVeiculo(vei); // mudamos o nome
                            break;
                    case 1:
                            c.setSobrenome(valor.toString()); // mudamos o sobrenome
                            break;
                    case 2:
                            c.setApelido(valor.toString()); // e o apelido
                            break;
                    }
                    // é importante notificar os listeners a cada alteração
                    fireTableDataChanged();
            }
*/

    public Agenda_de_Manutencao_de_Veiculo get(int linhas){
        return agenda.get(linhas);
    }

}

O que pode estar acontecendo???

Criado 21 de outubro de 2011
Ultima resposta 21 de out. de 2011
Respostas 1
Participantes 1