package examples; import java.awt.*; import javax.swing.*; public class EventPlayer extends Robot { public EventPlayer() throws AWTException { super(); } public synchronized void play(final EventInfo[] events, final Component stage) { if (events == null || events.length == 0) return; (new Thread() { public void run() { try { setAutoWaitForIdle(true); long lastTime = events[0].time; for (EventInfo e : events) { delay((int) (e.time - lastTime)); lastTime = e.time; switch (e.id) { case Event.MOUSE_DOWN: mousePress(e.buttons); break; case Event.MOUSE_UP: mouseRelease(e.buttons); break; case Event.MOUSE_MOVE: case Event.MOUSE_DRAG: Point p = new Point(e.point.x, e.point.y); SwingUtilities.convertPointToScreen(p, stage); mouseMove(p.x, p.y); break; case Event.KEY_PRESS: keyPress(e.keyCode); break; case Event.KEY_RELEASE: keyRelease(e.keyCode); break; } } } catch (Exception e) { e.printStackTrace(); } } }).start(); } }