noname:
Koukám, že mnoho lidí tu radí Swing, což je celkem slušná knihovna, bohužel ale desktop technologie se posouvají trochu dále, což se o Swingu říci nedá. Zkus nahlédnout i na JavaFX (verze 2). Aplikace v něm napsané nejsou výrazně náročnější než u Swingu a lépe umožňuje oddělit uživatelské rozhraní od kódu aplikace (má např. i nativní podporu pro databinding).
JavaFX v. 1 byl hodně neúspěšný pokus Sunu udělat "něco jako WPF na .Netu" a dopadlo to dost tragicky. Současná verze už je celkem použitelná, bohužel na mnoho novinek se čeká až s vydáním Java 8.
Jinak s tím, že cokoliv delšího než cca 250ms, co se v aplikaci děje, se má dít ve vlákně na pozadí, platí samozřejmě obecně. Podíváš-li se např. na framework Griffon (je sice pro groovy, ale využívá Swing/JavaFX), tam již jsou připravená řešení právě pro tyto příklady a nemusíš se s tím drbat sám.