Why are you creating an anonymous Runnable, then call its run() method? That doesn't create a thread or anything; you might as well just place the contents of the run() method there.
If you cannot use SwingWorker (I suggest you upgrade to Java 6; Java 5.0 is getting quite old already!)
you should use a regular thread, and do
all interactions to the GUI using EventQueue.invokeLater or EventQueue.invokeAndWait.