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