Java jtable 不可编辑
Java jtable non editable
我正在开发一个项目,但遇到一个小问题没有找到解决方案。
我有一个 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));
接下来 class 制作 table 模型:
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;
}
}
感谢所有帮助。
return new DefaultTableModel(Linhas, NomesColunas);
您想使用您的自定义 TableModel:
return new NonEditableModel(Linhas, NomesColunas);
此外,变量名不应以大写字符开头。你的一些名字是正确的,其他的则不正确。保持一致!!!
我正在开发一个项目,但遇到一个小问题没有找到解决方案。
我有一个 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));
接下来 class 制作 table 模型:
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;
}
}
感谢所有帮助。
return new DefaultTableModel(Linhas, NomesColunas);
您想使用您的自定义 TableModel:
return new NonEditableModel(Linhas, NomesColunas);
此外,变量名不应以大写字符开头。你的一些名字是正确的,其他的则不正确。保持一致!!!