1fuyouinfinite
1fuyouinfinite

Reputation: 1

How to know if a JTable is empty?

Unlike most data structures, JTable does not have isEmpty() method. So how can we know if a given JTable doesn't contain any value?

Upvotes: 6

Views: 14950

Answers (4)

Babafingo
Babafingo

Reputation: 1

Actually, there is no method for learning it my friend. But myself, using a method to learn whether it's empty or not.

At first, while you create JTable set the default row count 0. When you want to use JTable, make the JTable with data which return count from the database. So if there is no data.getRowCount() will return 0 again. And so, you will know whether JTable is empty or not.

 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();
 }

Lastly i want to say that if the jTable has head,for example : Name-Surname-Age etc, table.getRowCount(); table.getColumnCount();not working because of head of jtable. So,my opinion is that if we cant check the jTable,check the Dataset which be written in the table.

Upvotes: -3

Ibrahem M. Nasser
Ibrahem M. Nasser

Reputation: 1

you have a fixed number of columns .. suppose three

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;
    }

if the return value equal 0 its absolutely an empty table

Upvotes: 0

K139
K139

Reputation: 3669

This will return actual number of rows, irrespective of any filters on table.

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

jTable.getRowCount() will return only visible row count. So to check isEmpty() then it's better to use getRowCount() on model.

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

Upvotes: 7

camickr
camickr

Reputation: 324098

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

If either one is 0, then there is no data.

Upvotes: 6

Related Questions