Mostly because they were developed by programmers that failed to understand how to proper use Swing.
It is incredible how, regardless of programming language and UI toolkit, people still take the easy root and do heavy work on the UI thread. And don't make proper use of widgets customization capabilities.
C# with the WinForms API is the only desktop GUI programming I've done and I found both the process and results very pleasant. IIRC I was fairly well behaved and used the "BackgroundWorker" in a few places :-)
It is incredible how, regardless of programming language and UI toolkit, people still take the easy root and do heavy work on the UI thread. And don't make proper use of widgets customization capabilities.