当前位置: 首页 > 知识库问答 >
问题:

从resultset填充表时更改jtable的列类型

滕学义
2023-03-14

我有worker从resultset填充jtable,如下所示;

public class WorkerFillTable extends SwingWorker<DefaultTableModel, DefaultTableModel> {
        private DefaultTableModel modeltable;
        public WorkerFillTable(DefaultTableModel modeltable) {
         this.modeltable = modeltable;
        }
       @Override
     protected DefaultTableModel doInBackground() throws Exception {
            ResultSet rs;
            Statement stmt;
            String query = "select Name,ID,Status,IsActive from current_conf\n" +
            "order by Name,ID";

            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionUrl = "jdbc:sqlserver://192.168.130.100;" + "databaseName=DBST;" + "user=" + "user1" + ";" + "password=" + "userpass1" + ";"; 
            Connection con = DriverManager.getConnection(connectionUrl);
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);
            ResultSetMetaData rsmd = rs.getMetaData();

            Vector<String> columnNames = new Vector<String>();
            int columnCount = rsmd.getColumnCount();

            for (int column = 0; column < columnCount; column++) {
                columnNames.addElement(rsmd.getColumnLabel(column + 1));
            } 

            Vector<Vector<Object>> data = new Vector<Vector<Object>>();

           while (rs.next()) {
                Vector<Object> vector = new Vector<Object>();
                for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                vector.add(rs.getObject(columnIndex));
                }
                data.add(vector);
           }

            rs.close();
            stmt.close();
            modeltable = new DefaultTableModel(data, columnNames);
            return modeltable;
        }


      @Override
      protected void done() {
        try {
            TableModel modeltable = get();
            sorter = new TableRowSorter(modeltable);
            cTable.setRowSorter(sorter);
            cTable.setModel(modeltable);
        } catch (InterruptedException | ExecutionException ex) {
        }
      }

    }

但所有列都是字符串。DB的“Isactive”列有点只有“1”或“0”Jtable显示该列为“true”或“false”,我需要在Jtable中编辑最后一列typr来boelan。我怎么做?

共有1个答案

刁丰羽
2023-03-14

JDBCADAPTER扩展了AbstractTableModel,它演示了关系数据库和Java数据类型之间的典型映射。它可以在这里看到,完整的示例可以在Samples/demo/jfc/tableexample中找到,可以在Java SE Development Kit 8u25 Demos和Samples下载中找到。在大纲上,

>

  • 重写getColumnClass()

    ResultsetMetadata获取列的数据类型

  •  类似资料:
    • 问题内容: 我有工人从下面的结果集中填充jtable; 但是所有列都以String形式出现。DB的“ IsActive”列仅具有“ 1”或“ 0”,而Jtable将此列显示为“ true”或“ false”。我需要在jtable中编辑最后一列typr来进行boelan。我该怎么做 ? 问题答案: 进行了扩展,它说明了关系数据库和Java数据类型之间的典型映射。在 Java SE开发工具包8u25演

    • 问题内容: 我整天用谷歌搜索,没有运气。我按确定按钮后调用方法。所以代码是: 我的testResultSet()方法工作正常。现在,如何改变我的代码,以便它工作,或者什么是最简单的代码,以使DefaultTableModel从ResultSet?提前致谢。 编辑:我正在接收java.lang.IllegalStateException: SQLite JDBC: inconsistent inte

    • 问题内容: 如何用对象类型的列表中的值填充JTable。我的代码如下所示: 我已经有了列,列表将来自schedule变量?考虑这些列,如何将其放到表中? 问题答案: 看一下DefaultTableModel。您可以遍历List并为每一行创建Object数组。

    • 我制作了一个显示数据库的GUI JTable。我在尺寸上有一个问题。 如何使JTable的列填充JScrollPane?例如,如果一个表中有很多列,那么它只需保持它们的默认大小并让它们滚动。 如果SQL JTable确实需要滚动,那么我只想让它保持这样,这样它就需要滚动。 这是我制作JTable的代码:

    • 作为我作业的一部分,我们得到了一个我们不能更改的接口,以及一些用来开发我们方法的预定义测试。 界面如下: 我正在运行的特定测试: 以及我需要从测试中创建的方法: 从测试中我可以看出,在方法中,我需要创建并用注册映射中匹配的学生填充它,然后返回列表。 我创建了以下字段:- 我搞不懂的是,如何将注册地图中的数据传递到学生列表中,以使测试中的断言为真。