【问题标题】:Java jtable non editableJava jtable 不可编辑
【发布时间】: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


【解决方案1】:
return new DefaultTableModel(Linhas, NomesColunas);

您想使用您的自定义 TableModel:

return new NonEditableModel(Linhas, NomesColunas);

此外,变量名称不应以大写字符开头。你的一些名字是正确的,其他的不是。保持一致!!!

【讨论】:

  • 感谢您的帮助!!!我得到了这个方法。当代码和变量带有大写字母时,我深表歉意。代码很旧,我现在对其进行了改进。这段代码是我在学校第一次开始学习编程的时候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多