JTable, RowSorter i problem z zaznaczeniem wiersza

0

Hej :)
Mam Jtable, z moim TableModel, oraz z TableRowSorterem.

I teraz chcialbym aby program po zaznaczeniu wiersza w tabeli, wyswietlal poszczegolne wartosci z zaznaczonego wiersza w textfieldach ponizej tabeli, graficznie to juz sobie zrobilem, chodzi o sam kod... mam cos takiego w klasie z narysowana tabelą:

private void jTable2MouseClicked(java.awt.event.MouseEvent evt) {

int row = jTable2.getSelectedRow();
int i=0;
while(i<jTable2.getColumnCount()){
Object temp = jTable2.getValueAt(row, i);
switch(i){
case 0: nr0setText(temp.toString());
case 1: nr1.setText(temp.toString());
case 2: nr2.setText(temp.toString());
case 3: nr3.setText(temp.toString());
case 4: nr4.setText(temp.toString());
case 5: nr5.setText(temp.toString());
case 6: nr6.setText(temp.toString());
case 7: nr7.setText(temp.toString());
}
i++;
}
}

Smiga do momentu w ktorym nie klikne na naglowek tabeli i mi ją posortuje wg jakiejs kolumny,
wtedy po zaznaczeniu wiersza wyswietla mi nadal wartosci takie jak przed posortowaniem...
Prosze o jakas wskazowke przejrzałem metody dla JTable i RowSorter, ale moze cos przeoczylem :)
bede wdzieczny za sugestie
Pozdrawiam SuperOzi.

0
  1. Przeoczyłeś

abstract int convertRowIndexToModel(int index)
Returns the location of index in terms of the underlying model.
abstract int convertRowIndexToView(int index)
Returns the location of index in terms of the view.

  1. Zapoznaj się z opisem klasy TableRowSorter
  2. Ja bym zrobił tablicę pól tekstowych i wypełniał je tak
for(int i=0;i<jTable2.getColumnCount();i++)
  nr[i].setText(jTable2.getValueAt(row, i).toString());

powyższy kod nie wymaga zmian gdy dodasz nowe kolumny
pozdrawiam

0

Ok, ale z tego co teraz widze to te metody wlasnie nie działaja poprawnie dla włączonego sortowania.
"The previous example assumes you have not enabled filtering. If you have enabled filtering convertRowIndexToView will return -1 for locations that are not visible in the view. "

Co do pktu 3. to faktycznie lepsze rozwiazanie:)

Probowalem roznych kombinacji z tymi dwoma metodami, ale nadal nie dziala, i nie wiem co dalej... ;)

0

Ja korzystam z klasy TableRowSoter, od zaznaczonego wiersza w tabeli do indeksu w modelu dochodzę tak:

   ....
   int index=tabela.getSelectedRow();
   if(index==-1) // nic nie jest zazanczone
   {
       return;
   }
   int indexInModel=sorter.modelIndex(index);
0

Ok, poradzilem sobie :)
Dzieki i pozdrawiam !

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