我正在开发一个项目,我遇到了一个无法找到解决方案的问题。
我有一个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;
}
}
感谢所有帮助。
答案 0 :(得分:4)
return new DefaultTableModel(Linhas, NomesColunas);
您想使用自定义TableModel:
return new NonEditableModel(Linhas, NomesColunas);
此外,变量名称不应以大写字符开头。你的一些名字是正确的,其他的则不是。保持一致!!!