W przeciwieństwie do większości struktur danych, JTable
nie ma metody isEmpty()
. Jak więc możemy się dowiedzieć, czy dany JTable
nie zawiera żadnej wartości?Jak sprawdzić, czy JTable jest pusty?
Odpowiedz
table.getRowCount();
table.getColumnCount();
Jeśli jedno z nich ma wartość 0, oznacza to brak danych.
Spowoduje to zwrócenie rzeczywistej liczby wierszy, niezależnie od filtrów w tabeli.
int count= jTable.getModel().getRowCount();
jTable.getRowCount()
zwróci tylko widoczną liczbę wierszy. Aby sprawdzić isEmpty(), lepiej jest użyć modelu getRowCount()
.
public static boolean isEmpty(JTable jTable) {
if (jTable != null && jTable.getModel() != null) {
return jTable.getModel().getRowCount()<=0?true:false;
}
return false;
}
masz stałą liczbę kolumn .. załóżmy trzy
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;
}
jeśli zwracana wartość równa 0 jest absolutnie pusty stół
Właściwie nie istnieje metoda za naukę tego, mój przyjacielu. Ale ja sam, używając metody, aby dowiedzieć się, czy jest pusty, czy nie.
Najpierw podczas tworzenia JTable
ustaw domyślny rząd wierszy 0
. Jeśli chcesz użyć wartości JTable
, zmień wartość JTable
na dane zwracane przez bazę danych. Więc jeśli nie ma data.getRowCount()
ponownie zwróci 0
. I tak będziesz wiedział, czy JTable
jest pusty, czy nie.
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();
}
Na koniec chcę powiedzieć, że jeśli JTable ma głowę, na przykład: Nazwa-Nazwisko-Age etc, table.getRowCount(); table.getColumnCount();
nie działa z powodu szefa JTable. Tak więc, moim zdaniem, jeśli nie możemy sprawdzić jTable, sprawdź zestaw danych, które zostaną zapisane w tabeli.
(1-) ten kod pokazuje, jak dodać dane z ResultSet do modelu tabeli. Pytanie dotyczyło wiedzy, kiedy "stolik" jest pusty. Skąd pochodzą dane potencjalnie nie ma znaczenia. – camickr
Tak jak na początku sądzę, że jest tak: "Nie ma dla niego zdefiniowanej metody, prawda?". Chcę tylko pokazać, co robię, czy jTable jest pusty, czy nie. Logicznie, jeśli nie ma danych z bazy danych, jTable opróżni się poprawnie? Myślę, że w ten sposób rozwiązuję mój problem, aw moich projektach działa. – Babafingo
Może to rozwiązać twój problem, ale nie zadałeś pytania, a odpowiedź nie jest tematem. Baza danych jest nieistotna. Pytanie dotyczyło danych w JTable, a nie tego, czy zapytanie w bazie danych zwraca jakiekolwiek dane. – camickr
Technicznie powinieneś umieścić to jako "wtedy nie ma danych ** do wyświetlenia **". Albo może zwrócić zero, ale to nie znaczy, że model bazowy nie zawiera żadnych danych. –