table.setModel a puste dane?

0

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

0

Polecam zapoznanie się ze wzorcem Null Object.

0

Poczytałem, ale jak to się ma do mojego problemu?

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