Odświeżanie zawartości JTable

0

Witam.

Napisałem prosty program pobierający dane z bazy sql. Dane są wyświetlane w JTable. Model tabeli dziedziczę po AbstractTableModel.

Problem jest następujący: po dodaniu nowych danych do tabeli, JTable nie jest aktualizowany. Umożliwia mi to dopiero stworzenie nowego modelu. Próbowałem wywołać

((AbstractTableModel)(table.getModel())).fireTableDataChanged();

jednak nie przyniosło to żadnego zauważalnego rezultatu.

Czy ktoś zna jakiś inny sposób na odświeżenie tabeli?

PS. repaint() również nie działa. Wynika to pewnie z faktu iż dane nie zostały ponownie wczytane z bazy po uaktualnieniu i nie ma nowych danych do odrysowania.

0

Metoda fireTableDataChanged powinna działać. Jak dodajesz nowe dane do tabeli?

0

No tu może być właśnie cały problem, ponieważ ja dodaje dane do tabeli w bazie sql, a nie do JTable. Bo jak dodaje wiersze do JTable to nie mam problemu, więc miałem nadzieję, że zadziała to też przy dodawaniu danych do bazy.

1

Nie, tak nie ma szans. Dane w bazie danych, a w modelu tabeli to dwie różne dane (a JTable to tylko kontrolka je wyświetlająca). Tworzenie nowego modelu za każdym razem gdy odświeżasz dane nie jest złym rozwiązaniem. Jeśli chcesz natomiast zapisywać dane do bazy to możesz nadpisać metodę setValueAt w modelu, i w momencie wpisywania wartości w JTable od razu będziesz zmieniał model tabeli i bazę danych. Wszystko o JTable jest tutaj: http://download.oracle.com/javase/tutorial/uiswing/components/table.html

0

Ok, dzięki za wyjaśnienie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1