Java 如何知道JTable是否为空?

Java 如何知道JTable是否为空?,java,swing,jtable,Java,Swing,Jtable,与大多数数据结构不同,JTable没有isEmpty()方法。那么,我们如何知道给定的JTable是否不包含任何值呢 table.getRowCount(); table.getColumnCount(); 如果其中一个为0,则表示没有数据。这将返回实际行数,而不管表上是否有任何筛选器 int count= jTable.getModel().getRowCount(); jTable.getRowCount()将只返回可见的行数。所以要检查isEmpty(),最好在模型上使用getRow

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

table.getRowCount();
table.getColumnCount();

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

这将返回实际行数,而不管表上是否有任何筛选器

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;
    }
公共静态布尔值为空(JTable-JTable){
if(jTable!=null&&jTable.getModel()!=null){

返回jTable.getModel().getRowCount()您有固定数量的列。假设有三列

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;
    }
public int-Actualrows(DefaultTableModel m){
int行=0;
int i=0;
对于(i=0;i

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

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

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;
    }
 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
时,设置默认的行计数
0
。当您想要使用
JTable
时,使用从数据库返回计数的数据创建
JTable
。因此,如果没有
数据。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();
 }
try(ResultSet rs=st.executeQuery(查询)){
int colcount=rs.getMetaData().getColumnCount();//get是数据库中的行数
DefaultTableModel tm=新的DefaultTableModel();

对于(int i=1;从技术上讲,您应该将其设置为“then's no data to display”(然后没有要显示的数据)。两者都可以返回零,但这并不意味着基础模型不包含任何数据。(1-)这段代码显示了如何将结果集中的数据添加到表模型中。问题是如何知道“表”何时显示是空的。数据可能来自何处是不相关的。正如我首先想说的,“没有为它定义的方法,不是吗?”.我只想说明我在做什么,jTable是否为空。从逻辑上讲,如果数据库没有返回数据,jTable将为空,对吗?我认为这种方法解决了我的问题,在我的项目中它正在工作。它可以解决你的问题,但你没有问这个问题,你的回答是离题的。数据库与此无关。问题是about JTable中的数据,而不是数据库查询是否返回任何数据。