Основной смысл существования Java в том, что она работает везде приблизительно одинаково. Посему не следует использовать какой-либо софт, использующий нативные интерфейсы, за исключением собственно Java VM.
В этом случае решение - только Swing. На нём реально можно писать приложения, нисколько не уступающие нативным на Windows, скажем. И выглядят они неотличимо. По крайней мере, лучше Delphi ))) Чтобы вид Java-десктоп не отличался от натbвиного, достаточно одной строки кода. Тогда в разных системах приложение будет выглядеть слегка по разному (углы, цвета), но сохраняя основные геометрические соотношения между элементами GUI и взаимодействуя одинаково с файловой системой, БД, графикой!
Возможно, стоит поискать более высокоуровневые надстройки над Swing. Или самому сделать свою библиотеку, делающую нужные Вам вещи в 1-2 строки кода.
Есть и разнообразные компоненты, работающие со звуком, видео, 3D. Видел Doom-3 на Java через OpenGL.