【问题标题】:How to add boolean column into resultset in java then add result to jtable如何在java中将布尔列添加到结果集中然后将结果添加到jtable
【发布时间】:2015-01-28 04:49:01
【问题描述】:

让我解释一下我想在这里实现什么 在我的结果集中,它们是具有 4 列的数据,然后我需要手动添加 1 列,它应该包含布尔值(false)

 ResultSet res = DbConnect.tabelDb(sql); // get result set 
List expRptColWise = new ArrayList();

for (int i = 1; i <= res.getMetaData().getColumnCount(); i++) {
    expRxptColWise.add(false);
}

attendence.tblA.setModel(DbUtils.resultSetToTableModel(res))

我已尝试在 stackoverflow.com 中找到此代码 仍然这对我的 j 表没有任何更改,它只显示 4 列

【问题讨论】:

  • 不能使用DBUtils...你需要自己手动处理ResultSet
  • 您建议覆盖 tablemodel
  • 我建议您自己创建并自己填写

标签: java jtable resultset


【解决方案1】:

我怀疑它是否可以使用 DBUtils.resultSetToTableModel 来完成,因为它的实际 TableModel 实现是未知的,相反,你将不得不弄脏手,例如......

try (ResultSet rs = ...) {
    DefaultTableModel model = new DefaultTableModel();
    ResultSetMetaData rsmd = rs.getMetaData();
    for (int col = 0; col < rsmd.getColumnCount(); col++) {
        model.addColumn(rsmd.getColumnName(col + 1));
    }
    model.addColumn("boolean column");

    while (rs.next()) {
        Vector data = new Vector();
        for (int col = 0; col < rsmd.getColumnCount(); col++) {
            data.add(rs.getObject(col + 1));
        }
        data.add(Boolean.FALSE);
        model.addRow(data);
    }

} 

记住,如果你打开一个资源,你应该关闭它,更多细节请见The try-with-resources Statement

【讨论】:

  • 现在您的代码可以完美运行,现在我需要了解更多。如何添加这样的复选框。如何将此新列转换为复选框列
  • JTable 应该自动执行此操作,只要您使用 Boolean 作为列值而不是 boolean
  • 这对我的帮助比你想象的要多,所以我非常感谢你在这里的帮助。我已将模型添加到 JTable,但是当我运行程序时,第 5 列仅显示类似 false 的文本,因此到目前为止我已经尝试了很多次和许多示例,但我无法将复选框添加到第五列。这里显然需要添加相对于从结果集获取的每一行数据的结果和复选框____谢谢
【解决方案2】:
        DefaultTableModel model = new DefaultTableModel();
        ResultSetMetaData rsmd = rs.getMetaData();
                 for (int col = 0; col < rsmd.getColumnCount(); col++) {
                             model.addColumn(rsmd.getColumnName(col + 1));
                            }
                             model.addColumn("boolean");

                 while (rs.next()) {
                            Vector data = new Vector();
                            for (int col = 0; col < rsmd.getColumnCount(); col++) {//add another Column
                                        data.add(rs.getObject(col + 1));
                                    }
                                             data.add( Boolean.FALSE);
                                             model.addRow(data);
}


        JTable newOne=new JTable(model);


            JFrame f=new JFrame();
                f.add(new JScrollPane( newOne));
             f.pack();
            f.setLocationRelativeTo(null);
         f.setVisible(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2019-10-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多