Re:JTable não editável

5 respostas
G

dê uma olhada neste topico
talvez possa ajusdar
substitua a colunapela linha
http://www.guj.com.br/posts/list/42875.java#227192

5 Respostas

D

osmio blz

SuaTabela.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null}
            },
            new String [] {
                "ExCódigo", "ExNome", "ExCPF"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
boolean[] canEdit = new boolean [] {
                false, false, false
            };

nessa linha de código vc define true pra editavel e false pra não editavel
esse código vc coloca apos ter criado o seu objeto JTable, c vc estiver usando a IDE NetBeans , da uma procurada aew em cima da sua classe pq esse código ja vai estar gerado automaticamente , aew é só vc abrir essa classe em um editor de texto , o bloco de notas que seje , e altera de true pra false... qualquer duvida me de um toque aqui blz

L

Tem um jeito bem fácil que é você sobrescrever o método isCellEditable da classe DefaultTableModel assim:

DefaultTableModel tb = new DefaultTableModel(null, new String [] {“col 1”, “col 2”, “col …”})

{

<a class="mention" href="/u/override">@Override</a>

public boolean isCellEditable(int row, int col)

{

return false;

}

};
L

Dessa forma todas as colunas não são editáveis mas, é so colocar no método condições caso tenha colunas que precisem ser editadas.

DefaultTableModel tb = new DefaultTableModel(null, new String [] {"col 1", "col 2", "col ..."}) { @Override public boolean isCellEditable(int row, int col) { return false; } };

L

Estive procurando maneiras para desabilitar edição das minhas jTables, mas infelizmente nenhuma das soluções, nem mesmo as apresentadas aqui no GUJ serviram para a minha situação.

No entanto, dando uma fuçada nos métodos da jTable e nos eventos, experimentei criar um evendo MousePressed para a tabela, chamando os métodos editingCanceled() e editingStopped().

Bom, aqui deu certo, as células da jTable não entram mais em edição, apenas são selecionadas, agora se isso interfere no funcionamento de algum outro evento, eu não sei.

Segue o método:

private void suaJtableMousePressed(java.awt.event.MouseEvent evt) {

suaJtable.editingCanceled(null);

suaJtable.editingStopped(null); // talvez este não seja necessário

}
S

Bom dia!

Estou enfrentando o seguinte problema.

Preciso que um JTable possa ter suas linhas selecionadas, mas não possam ser editadas.

Procurei na API e não achei nenhum método setEditable().

O que preciso, é poder selecionar a linha, para poder recuperar o valor id da respectiva linha na tabela.

Portanto, o método setEnabled() não serve pra mim.

Desde já agradeço.

Criado 23 de outubro de 2006
Ultima resposta 23 de out. de 2006
Respostas 5
Participantes 5