dúvida com o tablemodel[Resolvido]

3 respostas
Dani_Gomes

Tenho várias tabelas para consultar e gostaria de usar somente uma jtable. O caso é que existe umas tabelas com três colunas e outras com cinco colunas, gostaria que quando eu clicasse no radiobutton que coloquei para selecionar a tabela, fosse trocado a quantia de colunas e os nomes das colunas.
Meu tablemodel atualmente está assim:

public class portariaTableModel extends AbstractTableModel{
    
    private List<portariaBean> clientes;
    
    public portariaTableModel(){
        clientes = new ArrayList<portariaBean>();
    }
    
    public portariaTableModel(List<portariaBean> lista){
        clientes.addAll(lista);
    }
    
    @Override
    public Class<?> getColumnClass(int coluna){
        return String.class;
    }
    public int getRowCount() {
        return clientes.size();
    }

    public int getColumnCount() {
        return contaColumn();
    }
    private int contaColumn(){
        int columnCount = 2;
        portariaBean bean = new portariaBean();
        if("alunos".equals(bean.getTabela())){
            columnCount = 5;
        }else
            if("cursos".equals(bean.getTabela())){
                columnCount = 3;
            }else
                if("disciplinas".equals(bean.getTabela())){
                    columnCount = 5;
                }else
                    if("professores".equals(bean.getTabela())){
                        columnCount = 3;
                    }
        return columnCount;
    }
    
    @Override
    public String getColumnName(int coluna){
        switch(coluna){
                case 0:
                    return "Código";
                case 1:
                    return "Nome";
                case 2:
                    return nomeColumnTree();
                case 3:
                    return nomeColumnFour();
                case 4:
                    return "Data de Nascimento";
                default:
                    return "";
            }
    }
    private String nomeColumnTree(){
        portariaBean bean = new portariaBean();
        String columnTree = null;
        if ("alunos".equals(bean.getTabela())) {
            columnTree ="Foto";
        }else
            if("cursos".equals(bean.getTabela())){
                columnTree = "Turno";
            }else
                if("disciplinas".equals(bean.getTabela())){
                    columnTree = "semestre";
                }else {
                    columnTree = "Foto";
                }
        return columnTree;
    }
    private String nomeColumnFour(){
        portariaBean bean = new portariaBean();
        String columnTree = new String();
        if ("alunos".equals(bean.getTabela())) {
            columnTree = "digital";
        }else
            if("disciplinas".equals(bean.getTabela())){
                columnTree = "Carga Horária";
            }
        return columnTree;
        
    }

    public Object getValueAt(int linha, int coluna) {
        fireTableStructureChanged();
        portariaBean bean =clientes.get(linha);
        switch(coluna){
            case 0:
                return bean.getCodigo();
            case 1:
                return bean.getNome();
            case 2:
                return valorColumnTree();
            case 3:
                return bean.getDigital();
            case 4:
                return bean.getDataNascimento();
            default:
                return null;
        }
    }
    private String valorColumnTree(){
        portariaBean bean = new portariaBean();
        String columnTree = new String();
        if("disciplinas".equals(bean.getTabela())){
            columnTree = bean.getSemestre();
        }else{
             columnTree = bean.getReturnfoto().toString();
            }
        return columnTree;

    }
    
    @Override
    public void setValueAt(Object value, int row, int col){
        portariaBean bean = clientes.get(row);
        switch(col){
            case 0:
                bean.setCodigo(value.toString());
                break;
            case 1:
                bean.setNome(value.toString());
                break;                    
        }
        fireTableDataChanged();
    }
    
    public void adiciona(portariaBean bean){
        clientes.add(bean);
        fireTableRowsInserted(clientes.size() - 1, clientes.size() - 1);
    }
    
    public void adicionaLista(List<portariaBean> lista) {
        clientes = lista;
        fireTableDataChanged();
    }

    public void remove(int row) {
        clientes.remove(row);
        fireTableRowsDeleted(row, row);
    }
    
    public int getIndice(String bean){
        return clientes.indexOf(bean);
    }
    
    public void limpaLista(){
        clientes.removeAll(clientes);
        fireTableDataChanged();
    }
}

Alguém tem uma ideia do que eu posso fazer?

3 Respostas

Marky.Vasconcelos

É um pouco dificil criar um TableModel generico, voce pode dar uma olhada no ObjectTableModel do Towel

Dani_Gomes

Valeu Marky.Vasconcelos.
Mas resolvi que vou fazer uma tela para cada consulta.
Senão vai ficar muito complicado e trabalhoso e eu estou sem tempo para isto agora.

Fica com deus

Marky.Vasconcelos

Complicado e trabalhoso é criar um Model para cada tela.

Criado 20 de novembro de 2011
Ultima resposta 22 de nov. de 2011
Respostas 3
Participantes 2