schicker Fehler, da kann ich nicht widerstehen gleich was zu zu schreiben, auch wenn hdi vielleicht auch antworten würde
an SwingUtilities.invokeLater() übergibt man Runnable Objekte, Thread implementiert dieses Interface auch,
der AWT-Thread führt dann einfach die run-Methode aus, es wird kein Thread gestartet, niemand interessiert sich dafür ob überhaupt ein Thread übergeben wird,
ein Runnable mit run() kann auch mehrfach ausgeführt, ein Thread nur einmal gestartet werden,
nach seinem Ende könnte aber immer noch jemand anders run() ausführen
bisher werden die Threads jedenfalls nicht gestartet -> join versagt,
verzichtige auf SwingUtilities.invokeLater(), rufe start() an den Threads auf
edit: falscher Tipp, da die GUI verändert wird ist SwingUtilities.invokeLater() durchaus anzustreben,
nur Join geht dann nicht, es sind ja nicht wirklich einzeln laufende Threads, doch mit boolean-Flags oder ähnlichem arbeiten