Sortowania w tabelce

0

Mam sobie model tabelki:

class ModelTabelki extends AbstractTableModel
        {
                Object[][] data;
                Object[] naglowek;
                public ModelTabelki(Object[][] dat, Object[] nag)
                       {
                        data = dat;
                        naglowek = nag;
                       }
                public int getColumnCount()
                       {
                        if(naglowek!=null)
                        return naglowek.length;
                        return 0;
                       }
                public int getRowCount()
                       {
                        if(data!=null)
                        return data.length;
                        return 0;
                       }
                public String getColumnName(int col)
                       {
                       return naglowek[col].toString();
                       }
               public boolean isCellEditable(int wiersz,int kolumna)            //Metoda zawijajaca wiersze w kolumnie tabeli
                        {
                         return false;
                        }
               // js=setPrefferedSize(new Dimension(400, 300));                 //NIby tm sie wywoluje
                public Object getValueAt(int row, int col) {
                return data[row][col];
            }
        }

Model jest uzupełniany danymi z tablicy:

  zlecenia = new ArrayList<Zlecenie>(EmployeeListDecorator4.readList(fileName_zlecenia));
       dane=new String[zlecenia.size()][10]; //wiersze, kolumny
       for (int i=0;i<zlecenia.size();i++)
       {
            for (int j=0;j<9;j++)
            {
             dane[i][0]=zlecenia.get(i)._numer;
             dane[i][1]=zlecenia.get(i)._data_przyjecia;
             dane[i][2]=zlecenia.get(i)._przyjal;
             dane[i][3]=zlecenia.get(i)._serwisuje;
             dane[i][4]=zlecenia.get(i)._data_realizacji;
             dane[i][5]=zlecenia.get(i)._apteka;
             dane[i][6]=zlecenia.get(i)._status;
             dane[i][7]=zlecenia.get(i)._cel;
             dane[i][8]=zlecenia.get(i)._rozwiazanie;
            }
       }

String[]nag={"Nr:","Data przyjęcia:","Przyjął","Serwisuje","Data realizacji","Apteka:","Status:","Cel:","Rozwiązanie:"};
ModelTabelki model = new ModelTabelki( dane2, nag );
table = new JTable(model);
js = new JScrollPane( table );

Chce zrobic sortowania takie jak to:

 class SortujWgNumeru implements Comparator<Zlecenie>
      {
        public int compare(Zlecenie o1, Zlecenie o2)
                        {
                         int z1 = Integer.parseInt(o1._numer);
                         int z2 = Integer.parseInt(o2._numer);
                         if (z1 > z2) {return -1;}
                         else if (z1 < z2) {return 1;}
                         return 0;
                        }
      }

//-------------------- sortowanie metoda ----------------------------------
     Collections.sort(zlecenia,new SortujWgNumeru());
     for(Zlecenie dos:zlecenia ) System.out.println(dos._numer);

chce zrobi ich kilka w zaleznosci od tego jaki nagłówek tabelki przycisne chciałbym aby dane tak sie posortowały I teraz:

  • Czy istniej jakas metoda która uruchamia akcjie przy nacisnieciu nagłówka kolumny?
  • Jesli istniej jak to zaimplementować aby posortowało mi dane w tabelce?

Prosze o wskazanie drogi ;)

0

W skrócie

   TableModel model = ....;
   JTable table = new JTable(model);
   table.setRowSorter(new TableRowSorter(model));

O szczególach (tzn. jak jest dobierany komparator dla kolumn) poczytaj w dokumentacji klasy TableRowSorter.
Jak stosujesz sortowanie, to musisz byc ostrożny przy usuwaniu i edytowaniu - indeks w tabeli, to co innego niz indeks w modelu. Przydadzą Ci sie metody convertRowIndexToModel() oraz convertRowIndexToView() z klasy JTable.

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