Java jtable не редактируется

Я разрабатываю проект, и у меня есть небольшая проблема, которая не находит решения.

У меня есть jtable, который записывает результаты в базу данных, и я не могу заблокировать редактирование ячеек.

У меня есть следующий код для передачи запроса:

BaseDados Ligacao = new BaseDados();
LigaBD = Ligacao.LigaBD();
String consulta="SELECT modalidade_id AS 'ID', modalidade_nome AS 'Nome' FROM modalidades";
resultado = Ligacao.ResultadoConsulta(LigaBD, consulta);
jTableListaMod.setModel(Tabelas.CriaModeloTabela(resultado));

И следующий класс, чтобы сделать модель таблицы:

import com.mysql.jdbc.ResultSetMetaData;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class Tabelas {
    public static TableModel CriaModeloTabela (ResultSet resultado)  {
        try {
            ResultSetMetaData metaData = (ResultSetMetaData) resultado.getMetaData();
            int NumeroColunas= metaData.getColumnCount();
            Vector NomesColunas = new Vector();
            for (int coluna = 0; coluna < NumeroColunas; coluna++){
                NomesColunas.add(metaData.getColumnLabel(coluna+1));
            }
            Vector Linhas= new Vector();
            while(resultado.next()){
                Vector Linha = new Vector();
                for (int i = 1; i <= NumeroColunas; i++){
                    Linha.add(resultado.getObject(i));
                }
                Linhas.add(Linha);
            }
            resultado.first();
            return new DefaultTableModel(Linhas, NomesColunas);
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

Я пробовал такие вещи:

public class NonEditableModel extends DefaultTableModel {

    NonEditableModel(Object[][] data, String[] columnNames) {
        super(data, columnNames);
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
}

Ценю всю помощь.

1 ответ

Решение
return new DefaultTableModel(Linhas, NomesColunas);

Вы хотите использовать свой пользовательский TableModel:

return new NonEditableModel(Linhas, NomesColunas);

Кроме того, имена переменных НЕ должны начинаться с символа верхнего регистра. Некоторые из ваших имен верны, другие нет. Быть последовательным!!!

Другие вопросы по тегам