Welcome to the wonderful world of Event Dispatch Thread violation (and race conditions).
Basically, you should never update (directly or indirectly) any UI component from any thread other then the EDT.
Basically, when you update your TableModel
, it is firing an event, which is been caught by the Table, which is trying to update itself, but the models state is in flux and does not make sense to the table...
Instead, trying using a SwingWorker
to update you model, using the publish and process methods to keep updates synchronised with the EDT
Check out Concurrency in Swing for more details and examples.