This class is used to generate native system input events for the purposes of test automation, self-running demos, and other applications where control of the mouse and keyboard is needed.
So this seems like it might be a contender until I read this blog post.
We have found that this approach is dangerous.
- Robot tests are very fragile, breaking any time the GUI layout changes.
- If the user moves the mouse while the tests are running, the Robot continues clicking, sometimes on the wrong application.
 One programmer reported that the Robot sent a partially completed email because it clicked on the send button of the mail client instead of a button in the application being tested.
- Since the tests run so quickly, it can be impossible to stop the tests once the Robot gets confused and starts clicking on other apps and typing characters that show up in other windows.
If you really feel that you could use some Robot tests, consider naming them differently than other tests. You might have a collection of RobotTest*.java tests. You can then run them independently of other tests, if you are extremely careful to avoid touching the mouse while the tests run.
So based on that I think I’m going to stick with my reflection based library.