java - JTable 未显示超过 5 列

标签 java swing sql-server-2008 netbeans jtable

我需要通过 JTABLE 显示表中的数据,我用 google 搜索了几个小时,终于成功找到了执行此操作的代码,并且工作正常,但我认为存在一个来自 netbeans 的问题

这是我的 table enter image description here

它有 6 列,

这是我的 jtable enter image description here

这就是结果 enter image description here

现在,在在这里发帖之前,我尽力去谷歌或阅读有关 jtables 的 Oracle 文档,但找不到任何有关这个奇怪问题的内容, 如果我使用 4 列,它会显示 4 列数据,我从设计中增加了 1 列,它开始显示 5 列数据(完美),当我最后添加 1 列最后一列时,它仍然显示 5 列数据

这是代码

   try {
        MyConnection mc = new MyConnection();
        Class.forName(mc.driver);
        Connection connect = DriverManager.getConnection(mc.login);
        Statement smt = connect.createStatement();
        ResultSet rs = smt.executeQuery("select * from library_member");
        ResultSetMetaData rsmeta = rs.getMetaData();
        int columns = rsmeta.getColumnCount();
        DefaultTableModel dtm = new DefaultTableModel();
        Vector columns_name = new Vector(), data_rows = new Vector();

        for(int i = 1; i < columns; i++){
            columns_name.addElement(rsmeta.getColumnName(i));
        }

        dtm.setColumnIdentifiers(columns_name);

        while(rs.next()){
            data_rows = new Vector();
            for(int j = 1; j < columns; j++){
                data_rows.addElement(rs.getString(j));
            }
            dtm.addRow(data_rows);
        }

        jTable1.setModel(dtm);

    } catch (Exception ex) {
        ex.printStackTrace();
    }

P.S 我认为它没有显示的列是因为 member_email 有 1 个空值,如果它是 true ,应该如何允许它,

问题!! : 如何将 rowCount 从 4 增加?它在 netbeans designview 中不可编辑,我没有足够的时间自己创建 jtable

<小时/>

我在member_id=2处更新了member_email,但仍然没有显示:(

最佳答案

你数错了。将 for 循环中的 i = 1 更改为 i = 0。

    for(int i = 0; i < columns; i++){
        columns_name.addElement(rsmeta.getColumnName(i+1));
    }

还有这里:

        for(int j = 0; j < columns; j++){
            data_rows.addElement(rs.getString(j+1));

        }

另请注意 MadProgrammer 的评论,即 JDBC 行索引从 1 而不是 0 开始。这就是为什么您还需要 getColumnName(i+1) 和 getString(j+1)。

或者您可以在循环中从 1 开始计数并测试 <= 列,例如:

    for(int i = 1; i <= columns; i++){
        columns_name.addElement(rsmeta.getColumnName(i));
    }

关于java - JTable 未显示超过 5 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180609/

相关文章:

sql-server - 在 SQL Server 数据库上分散负载

sql - 我可以有一个结果为 "Y"或 "N"的临时列吗?

java - 使用 spring-mvc 在网页上显示验证错误?

java如何将字符串转换为图标来执行setIcon

Java Object.wait(long, long) 实现与文档不同

java - 重新连接显示输出时如何刷新 GraphicsEnvironment.getLocalGraphicsEnvironment() 结构?

SQL IF NULL 来自 SELECT 语句

java - 谷歌地图 getdirections api - 折线

java - 如何将 JMenu 的弹出窗口居中?

java - 除了按钮之外,一切正常。图形用户界面Java