【发布时间】:2015-11-14 09:20:50
【问题描述】:
我正在开发一个项目,但我有一个小问题没有找到解决方案。
我有一个将结果写入数据库的 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;
}
}
感谢所有帮助。
【问题讨论】:
-
您的 NonEditableModel 应该可以工作。如果没有,那么您在其他地方有错误,并且想要创建并向我们展示minimal reproducible example。
-
使用java编码约定,变量应该以
lowercase开头。它将使您的代码易于阅读。 -
感谢您的帮助,我现在改进了它。这段代码是我在学校第一次开始学习编程的时候。
标签: java mysql swing jtable defaulttablemodel