Deixar os campos da JTable não editavel

5 respostas
K

Queria que as linhas da JTable não fossem editaveis, mas elas estao sendo inseridas do banco.
Código:

public void readJTable(){
    DefaultTableModel modelo = (DefaultTableModel) tabPesquisa.getModel();
    modelo.setNumRows(0);
    
    FuncionarioDAO fdao = new FuncionarioDAO();
    
    for(Funcionario f: fdao.read()){
        modelo.addRow(new Object[]{
            f.getId(),
            f.getNome(),
            f.getCpf()
        });
    }
}`

5 Respostas

4mega

Nunca use DefaultTableModel, pois é lento e cheio de problemas na questão de controle, mas se quer mesmo insistir neste tipo de implementação:

DefaultTableModel myModel = new DefaultTableModel(...) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
}
Jonathan_Medeiros

Olá @Kaio_Felipe, você pode desabilitar a edição das linhas da jTable da seguinte forma: clique com o botão direito do mouse em cima da jTable desejada, após clique em conteúdo da tabela, vai abrir uma nova janela, clique na aba colunas, ali vai estar listado todas as colunas existentes na sua jTable, aí é só você desmarcar o checked [editável] da coluna desejada e clicar em ok.

Boa sorte!

K

Olá, que tipo de Tabela você me recomendaria?

4mega

Recomendo vc desenvolver suas próprias classes TableModel. Segue o link de um site que explica bem detalhado:
http://www.botecodigital.info/java/criando-um-model-para-um-jtable-com-abstracttablemodel/

Criar suas primeiras TableModel’s não será fácil, mas com um pouco de calma é possível aprender a manipula-lo de forma mais eficiente.

Vou deixar anexado aqui algumas aplicações que podem lhe ser útil que utiliza TableModel personalizado.

BlocoNotas.rar (45.1 KB)
ou
CadastroSpam.rar (34.6 KB)

Essas aplicações usam bloco de notas para armazenar valores, se quiser mesmo executa-las modifique os diretórios indicados no código.

Eslley

rstable.jar (3.1 KB)
Acho que essa biblioteca serve.
Para usar você chama assim:

suatabela.setModel(rstable.resultSetToTableModel(rs, false));

onde:
rs é o ResultSet e false é pra dizer que a tabela não vai ser editável

Criado 16 de outubro de 2016
Ultima resposta 19 de out. de 2016
Respostas 5
Participantes 4