Witam, mam problem z odświeżaniem tabelki gdy nie ma danych do wyświetlenia. Program działa tak Uruchamiane jest okno w oknie znajduje się 7 tabelek. Wczytywane są dane do arraylisty następnie dane dzielone są wedle pewnych kryteriów i przydzielane do 7 tablic 2 wymiarowej. No i wyświetlane w tabelkach.
Następnie po zmianie danych odświeżane są tabelki. Wszystko działa gdy tablica do wyświetlenia w tabelce nie jest pusta. Tu mam przykład odświeżenia tabelki:
try{
TableModel model= new ModelTabelki(dane, nag)
{
public Class getColumnClass(int column)
{
Class returnValue;
if ((column >= 0) && (column < getColumnCount()))
{returnValue = getValueAt(0, column).getClass();}
else {returnValue = Object.class; }
return returnValue;
}
};
final TableRowSorter<TableModel> sorter =new TableRowSorter<TableModel>(model);
table.setRowSorter(sorter);
table.setModel(model);
Render_zlecen();
}
catch (PatternSyntaxException pse) {System.err.println("Brak odswierzenia danych");}
Ta akcja wywoływana jest gdy zmienia się dane, i wszystko działa fajne. Jedna gdy dochodzi do sytuacji gdy dane (tablica do wyświetlenia w tabelce jest pusta, a musi tak często być) wywala mi się błąd:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at CRM.ModelTabelki.getValueAt(ModelTabelki.java:38)
at CRM.Okno_planowanie_harmonogramu$34.getColumnClass(Okno_planowanie_harmonogramu.java:2991)
at javax.swing.table.TableRowSorter.useToString(TableRowSorter.java:224)
at javax.swing.DefaultRowSorter.updateUseToString(DefaultRowSorter.java:607)
at javax.swing.DefaultRowSorter.sort(DefaultRowSorter.java:556)
at javax.swing.DefaultRowSorter.allChanged(DefaultRowSorter.java:816)
at javax.swing.DefaultRowSorter.modelStructureChanged(DefaultRowSorter.java:826)
Tabelka wyświetla się jako pusta, ale po ponownej zmianie danych już sie nie odświerza ;/ Rozwiązaniem jest dopiero odpalenie programu od nowa.
Chcialem uzyskać coś takiego ze gdy dane są puste to robi tak:
]]
table.setModel(new ModelTabelki(null, nag));
Moge jeszcze zrobić tak ze odświeża tabelke wyłącznie jeśli ilość dnych w tablicy jest większa od zera, ale wtedy gdy nie ma danych pozostaje widoczny ostatni rekord. Więc i to rozwiązanie nie daje rady.
Ale nie wiele to pomogło, jak zrobić aby gdy tablica z danymi jest pusta nie wywalało mi tego błędu bo później muszę odpalać program od nowa. Szukałem czytałem i to co znalazłem na ten temam t okazało się nie bardzo pomocne