Вы можете пойти в любую сторону. На Overtone мы создали ряд пользовательских графических компонентов непосредственно в Clojure с помощью Seesaw. Много раз, атома и (seesaw.core/canvas)
достаточно для такого рода вещей.
В зависимости от того, насколько вы хотите стать, одна из причин сделать это в Clojure - вы можете расширить протоколы Seesaw (выбор, привязка и т. Д.) На новый виджет, чтобы он без проблем работал с Seesaw. Другое соображение заключается в том, должен ли ваш виджет использовать данные Clojure из других частей приложения. Это будет намного чище от Clojure, чем Java.
Тем не менее, если вы знакомы с Swing / Java, вы можете сделать это там, и Seesaw будет очень рад работать с пользовательским виджетом, встроенным в Java. Удачи!