Disclaimer: I've only scanned the code casually, so I may be wrong.
Your
SimpleTableModel class uses
dataVector in methods inherited defined by
TableModel interface. Therefore the
JTable can see - and sort - these records only. The
JTable does not know anything about the
allRows vector - it could get to know about it only if you passed information about
allRows data to it using the
TableModel's methods.
Don't sort the rows using
TableRowSorter. Sort the rows directly in the
allRows array. The pagination code can remain as it is. You may need to add some listeners to detect user clicking on the table header, sort the array accordingly and resend it to the table.
Another approach might be to use both table sorting and filtering capabilities and let the user filter the records by some criteria instead of pagination (see
JTable tutorial for more info on filtering).