【问题标题】:How to know if a JTable is empty?如何知道 JTable 是否为空?
【发布时间】:2015-06-02 18:12:45
【问题描述】:

与大多数数据结构不同,JTable 没有isEmpty() 方法。那么我们如何知道给定的JTable 是否不包含任何值呢?

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    这将返回实际的行数,而与表上的任何过滤器无关。

    int count= jTable.getModel().getRowCount(); 
    

    jTable.getRowCount() 将只返回可见的行数。所以要检查 isEmpty() 那么最好在模型上使用getRowCount()

    public static boolean isEmpty(JTable jTable) {
            if (jTable != null && jTable.getModel() != null) {
                return jTable.getModel().getRowCount()<=0?true:false;
            }
            return false;
        }
    

    【讨论】:

      【解决方案2】:
      table.getRowCount();
      table.getColumnCount();
      

      如果其中一个为0,则没有数据。

      【讨论】:

      • 从技术上讲,你应该把它写成“那么没有数据要显示”。两者都可以返回零,但这并不意味着底层模型不包含任何数据。
      【解决方案3】:

      你有固定数量的列..假设三个

      public int Actualrows(DefaultTableModel m) {
              int row = 0;
              int i = 0;
              for (i = 0; i < m.getRowCount(); ++i) {
      
                  try {
                      if (!(m.getValueAt(i, 0).equals("")) && !(m.getValueAt(i, 1).equals(""))
                              && !(m.getValueAt(i, 2).equals(""))) {
                          row++;
                      }
      
                  } catch (NullPointerException e) {
                      continue;
                  }
      
      
              }
              return row;
          }
      

      如果返回值等于 0,则绝对是一个空表

      【讨论】:

        【解决方案4】:

        其实,我的朋友,没有办法学习它。但我自己,用一种方法来了解它是否为空。

        首先,在创建JTable 时设置默认行数0。当您想使用JTable 时,请使用从数据库返回计数的数据创建JTable。所以如果没有data.getRowCount() 将再次返回0。这样,你就会知道JTable 是否为空。

         try (ResultSet rs = st.executeQuery(query)) { 
             int colcount = rs.getMetaData().getColumnCount();//get's the  row count in the database
             DefaultTableModel tm = new DefaultTableModel();
             for (int i = 1; i <= colcount; i++) {
                 tm.addColumn(rs.getMetaData().getColumnName(i));
             }
             while (rs.next()) {
                Object[] row = new Object[colcount];
                for (int i = 1; i <= colcount; i++) {
                    row[i - 1] = rs.getObject(i);
                }
                tm.addRow(row);
             }
             jTblAd.setModel(tm);
             conn.close();
         }
        

        最后我想说的是,如果 jTable 有头部,例如:姓名-姓氏-年龄等,table.getRowCount(); table.getColumnCount();not 工作因为 jtable 的头部。所以,我的意见是,如果我们不能检查jTable,检查表中写入的Dataset。

        【讨论】:

        • (1-) 此代码显示如何将数据从 ResultSet 添加到表模型。问题是关于知道“表”何时为空。数据的潜在来源无关紧要。
        • 我首先想到的是“没有定义的方法,不是吗?”。我只想展示我在做什么,无论 jTable 是否为空。从逻辑上讲,如果数据库没有返回数据,jTable 会为空吗?我认为这种方式可以解决我的问题,并且在我的项目中它正在发挥作用。
        • 它可能会解决你的问题,但你没有问这个问题,你的回答是题外话。数据库无关紧要。问题是关于 JTable 中的数据,而不是关于数据库查询是否返回任何数据。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多