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);
Кроме того, имена переменных НЕ должны начинаться с символа верхнего регистра. Некоторые из ваших имен верны, другие нет. Быть последовательным!!!