The title basically says it all.
The only thing to take into consideration is it needs to be cross platform.
Kind of depends.
Are you using JFrame without a game library or framework?
If so then you want to call the method
If you're using a game framework it should have a polling system instead of events, which I'm not sure how to get around (Unless you could obtain the JFrame). If this is the case, just check each update (or tick) if a button is pressed.
While not technically a JAVA library SDL is a C library that I use extensively that does input and much more. It does however have bindings for java and can run on pretty much any platform in existence.
There is JSDL and SDLjava