Re:JTable não editável

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

osmio blz

[code]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];
        }
    });[/code]



        [code]boolean[] canEdit = new boolean [] {
            false, false, false
        };[/code]

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

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 …”})
{
@Override
public boolean isCellEditable(int row, int col)
{
return false;
}
};

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; } };

1 curtida

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
}

2 curtidas

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.