How to simulate keyboard input (including cursor movement) by programmatically generating KeyEvents
===

I am trying to simulate keyboard input by programmatically generating KeyEvent objects and pumping them to the event queue. This works fine except that when characters are being entered into a JTextField, for example, the cursor (caret?) does not move to always be at the end of the entered value. For example, if we denote the caret as the pipe | then this is what I get:

An 'A' keypress is simulated by sending a KEY_PRESSED, KEY_TYPED, KEY_RELEASED event, and the JTextField value is:

|A

that is, the cursor/caret is back at the beginning of the field after the A is entered.

How do I get the cursor/caret to automatically move as it would when actual physical keys are pressed?