[JTable] Przeskakiwanie do wybranego wiersza

[JTable] Przeskakiwanie do wybranego wiersza
CR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 208
0

Mam JTable i zaznaczam jakiś wiersz za pomocą
table.setRowSelectionInterval(rowIndex, rowIndex);

Metoda ta zaznacza wiersz, ale nie przeskakuje do niego. Nie jest on widoczny i użytkownik musi go szukać za pomocą suwaka. Co zrobić, aby tabelka automatycznie przeskakiwała do zaznaczonego wiersza tak, aby był on widoczny na ekranie?

Olamagato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Warszawa
  • Postów: 1066
0

A próbowałeś użyć po prostu metody validate() lub podobnej, która odświeża widoczny stan komponentu JTable?

Możesz sprawdzić co się dzieje przez tymczasowe zdefiniowanie:

Kopiuj
@Override public void valueChanged(ListSelectionEvent e)
{
super.valueChanged(e);
System.out.println("JTable próbuje zaktualizować widok");
}

Wtedy dowiesz się czy cały obiekt działa prawidłowo, tylko coś nie gra z wyświetlaniem, czy jednak coś namieszałeś i JTable w ogóle nie próbuje zaktualizować widoku komponentu.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Ja próbowałem, nie działa. JList ma odpowiednią metodę

Kopiuj
 ensureIndexIsVisible(int index) 

w JTable chyba nic odpowiedniego nie ma.

KA
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Myślę, że znam rozwiązanie twojego problemu:

Kopiuj
Rectangle aRect= jTable1.getCellRect(jTable1.getSelectedRow(), jTable1.getSelectedColumn(), true);
jTable1.scrollRectToVisible(aRect);

Podobna rzecz ma się z kontrolką jTree:

jTree1.scrollPathToVisible(new TreePath(childNode.getPath()));
ale to inna bajka :)

Pozdrawiam.

CR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 208
0

kaszaklabs, działa. Dzięki xD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.