Oto mój problem mam JTable i w konstruktorze podaję klasę dziedziczącą po AbstractTableModel do tego ustawiam setAutoCreateRowSorter(true);
Zrobiłem sobie dodawanie i usuwanie wierszy. Przynajmniej myślałem że zrobiłem usuwanie wierszy. Problem pojawia się gdy kliknę na nazwę kolumny i posortuję ją, i wtedy kiedy chce ją usunąć wywala mi w getValueAt(int row, int col) wyjątek jest to bodajże mówiący że wyszedłem po za tablicę. Szukałem co nieco na ten temat w google i na sun.com i wiem ze jakoś muszę użyć convertColumnIndexToModel(int viewColumnIndex) i convertRowIndexToModel(int viewRowIndex) tylko mam problem jak próbowałem paru sposobów m.in z JTableHeader itp. Ale coś nie działa
źródło w którym występują problemy
http://phpfi.com/324898
EDIT:
Rozwiązałem może komuś przyda się na przyszłość
zmieniłem funkcję deleteRow na
int viewRow = table.getSelectedRow();
int modelRow = table.convertRowIndexToModel(viewRow);
int column=getColumnCount();
Object[][] newdata = new Object[data.length - 1][column];
int rows=0;
for(int j=0;j < data.length;j++){
if(j==modelRow){ continue;}//jeśli pole ma być skasowane nie jest brane pod uwagę i pętla przeskakuje do następnego
for(int x=0;x<column;x++){
newdata[rows][x]=data[j][x];
}
rows++;//wiersze w nowej tablicy
}
his.data=newdata;
fireTableRowsDeleted(data.length -1,data.length -1);
Teraz można usuwac tylko jeden wiersz i to zaznaczony ale wszystko działa problemem była funkcja repaint(); której już nie ma