TableModel mudando nome das colunas

Então galera preciso que uma tabela seja montada de acordo com que eu precisar…

Pois tipo assim eu estou fazendo um sisteminha onde uso vários tipos de tabelas, porém o AbstractTableModel que tem aqui no GUJ que eu vi é assim

Porém eu preciso que esta parte seja preenchida de acordo com a tabela que eu quiser.

/* Array de Strings com o nome das colunas. */ private String[] colunas = new String[]{ "Código","Data","Hora", "Cliente", "Serviço","Telefone","Endereço","Preço"};

pensei em colocar váriaveis no lugar porém tem esta parte do get e set…

Oque eu poderia fazer para solucionar o meu problema? rsrs Atualmente estou usando a minha tabela principal com AbstractTableModel e as outras com DefaultTableModel =/

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package View;

import Controller.Controlador;
import Model.Agendamento;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;

/**
*

  • @author Michetti
    */
    public class TableModel extends AbstractTableModel{
    private static final long serialVersionUID = 1L;

    /* Lista de Cliente que representam as linhas. */
    private List linhas = new Controlador().listarAgendamentos();

    /* Array de Strings com o nome das colunas. */
    private String[] colunas = new String[]{
    “Código”,“Data”,“Hora”, “Cliente”, “Serviço”,“Telefone”,“Endereço”,“Preço”};

    /* Cria um ClienteTableModel vazio. */
    public TableModel() {
    linhas = new Controlador().listarAgendamentos();
    }

    /* Cria um ClienteTableModel carregado com

    • a lista de Cliente especificada. */
      public TableModel(List listaDeAgendamentos) {
      linhas = new Controlador().listarAgendamentos();
      }

    /* Retorna a quantidade de colunas. */
    @Override
    public int getColumnCount() {
    // Está retornando o tamanho do array “colunas”.
    return colunas.length;
    }

    /* Retorna a quantidade de linhas. */
    @Override
    public int getRowCount() {
    // Retorna o tamanho da lista de Cliente.
    return linhas.size();
    }

    @Override
    public String getColumnName(int columnIndex) {
    // Retorna o conteúdo do Array que possui o nome das colunas
    return colunas[columnIndex];
    }

    ;

    @Override
    public Class<?> getColumnClass(int columnIndex) {
    return String.class;
    }

    ;

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
    Agendamento ag = linhas.get(rowIndex);

     // Retorna o campo referente a coluna especificada.  
     // Aqui é feito um switch para verificar qual é a coluna  
     // e retornar o campo adequado. As colunas sãoas mesmas  
     // que foram especificadas no array "colunas".  
     switch (columnIndex) {  
    
         // Seguindo o exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};  
         case 0: 
             return ag.getCodigo();
         case 1:  
             return ag.getData();  
         case 2:  
             return ag.getHorario();  
         case 3:  
             return ag.getNome();  
         case 4:
             return ag.getServico();
         case 5:
             return ag.getTelefone();
         case 6:
             return ag.getEndereco();
         case 7:
             return ag.getValor();
         default:  
             // Isto não deveria acontecer...  
             throw new IndexOutOfBoundsException("columnIndex out of bounds");  
     }  
    

    }

@Override
//modifica na linha e coluna especificada
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Agendamento ag = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado

 switch (columnIndex) { // Seta o valor do campo respectivo  
     case 0:
         ag.setCodigo(Integer.parseInt(aValue.toString()));
     case 1:  
         ag.setData(aValue.toString());  
     case 2:  
         ag.setHorario(aValue.toString());  
     case 3:  
         ag.setNome(aValue.toString());  
     case 4:
         ag.setServico(aValue.toString());
     case 5:
         ag.setTelefone(aValue.toString());
     case 6:
         ag.setEndereco(aValue.toString());
     case 7:
         ag.setValor(aValue.toString());

     default:  
         // Isto não deveria acontecer...               
 }  
 fireTableCellUpdated(rowIndex, columnIndex);  
 }  

//modifica na linha especificada  
public void setValueAt(Agendamento aValue, int rowIndex) {  
    Agendamento ag = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado  

    ag.setCodigo(aValue.getCodigo());
    ag.setData(aValue.getData());  
    ag.setHorario(aValue.getHorario());  
    ag.setNome(aValue.getNome());  
    ag.setServico(aValue.getServico());
    ag.setTelefone(aValue.getTelefone());
    ag.setEndereco(aValue.getEndereco());
    ag.setValor(aValue.getValor());

    fireTableCellUpdated(rowIndex, 0);  
    fireTableCellUpdated(rowIndex, 1);  
    fireTableCellUpdated(rowIndex, 2);  
    fireTableCellUpdated(rowIndex, 3);
    fireTableCellUpdated(rowIndex, 4);
    fireTableCellUpdated(rowIndex, 5);
    fireTableCellUpdated(rowIndex, 6);
    fireTableCellUpdated(rowIndex, 7);

}  
;  


;  


@Override  
public boolean isCellEditable(int rowIndex, int columnIndex) {  
    return false;  
}  


public Agendamento getCliente(int indiceLinha) {  
    return linhas.get(indiceLinha);  
}  



/* Adiciona um registro. */  
public void addCliente(Agendamento m) {  
    // Adiciona o registro.  
    linhas.add(m);  


    int ultimoIndice = getRowCount() - 1;  

    fireTableRowsInserted(ultimoIndice, ultimoIndice);  
}  

/* Remove a linha especificada. */  
public void removeCliente(int indiceLinha) {  
    JOptionPane.showMessageDialog(null, linhas);
    linhas.remove(indiceLinha);  

    fireTableRowsDeleted(indiceLinha, indiceLinha);  
}  

/* Adiciona uma lista de Cliente ao final dos registros. */  
public void addListaDeCliente(List<Agendamento> ag) {  
    // Pega o tamanho antigo da tabela.  
    int tamanhoAntigo = getRowCount();  

    // Adiciona os registros.  
    linhas.addAll(ag);  

    fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);  
}  

/* Remove todos os registros. */  
public void limpar() {  
    linhas.clear();  


    fireTableDataChanged();  
}  

/* Verifica se este table model esta vazio. */  
public boolean isEmpty() {  
    return linhas.isEmpty();  
}  

}
[/code]

Nada impede você de usar uma lista ou qualquer outra estrutura de dados que queira para o nome das colunas. O importante é apenas retornar o nome certo no método getColumnName. Mas o ideal é montar um model mesmo para cada tabela. Se quiser algo genérico, dê uma olhada no ObjectTableModel do Towel:

Pensei que fazendo uma TableModel para cada tabela seria uma solução erradíssima rsrs
Mas já que você que é expert :stuck_out_tongue: disse, vou fazer uma para cada pois ficará até mais organizado minhas tabelas.