Zmiana danych w JTable

0

Chcę zrobić tabelę, której treść będzie się ciągle zmieniać.
Chciałbym, by jednemu wierszowi odpowiadal jeden obiekt mojej klasy. Ale by było wiele kolumn. Jak to zrobić? Pola takiego obiektu to niereferencyjne bądź niezmienne (immutable) typy jak int czy String. Co jest problemem przy odświeżaniu, które będzie powiedzmy co sekundę, bo dane w obiekcie mojej klasy będą się ciągle zmieniać. Czy muszę stworzyć sobie "zmienną" (nie immutable) klasę opakowywujacą String, żeby to sensownie działało zwyczajnie za pomocą

DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.fireTableRowsUpdated(0, dtm.getRowCount() - 1);

Czy ma ktoś jakiś inny pomysł ?

1

Tzn treść ma być generowana automatycznie, a użytkownik może tylko ją obserwować, tak?

Spróbuj stworzyć własną podklasę AbstractTableModel i nadpisać metodę getColumnClass (+ zaimplementować trzy pozostałe abstrakcyjne metody). Zamiast Vectora Vectorów jak w DefaultTableModel zrób np ArrayListę obiektów. Synchronizacji chyba nie trzeba, no chyba, że będziesz podmieniał całe obiekty w tej kolekcji z wielu wątków.

fireTableRowsUpdates/ fireTableCellUpdated powinno się odpalać z jak najbardziej optymalnymi parametrami, a nie na całość tabeli.

Spróbuj zrobić z własną podklasą AbstractTableModel i odpalaniem fireTableXxxUpdated, a potem napisz co z tego wyszło :]

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