To following on from Amit's pointer, Clojure has really good
Java interop but exactly how you approach a problem depends on exactly what you need to do. For example, you can create an implementation of a Java interface on the fly with reify, you can wrap and extend Java objects with proxy and you can also generate regular .class files with gen-class and its buddies.
You're example is similar to the sort of thing shown in the Clojure community docs for proxy:
mouse listener.
I recently blogged about generating .class files to write a
log4j appender in Clojure which shows a very different approach.