import com.sun.glass.ui.Robot; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.scene.layout.HBox; import javafx.stage.Stage; import java.awt.event.KeyEvent; public class TextAreaRobotUndoApp2 extends Application { private Scene scene; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { stage.setScene(createScene()); stage.show(); } private Scene createScene() { final TextArea textArea = new TextArea(); textArea.addEventFilter(javafx.scene.input.KeyEvent.KEY_PRESSED, new EventHandler() { @Override public void handle(javafx.scene.input.KeyEvent event) { System.err.format("key = %s, control = %b, meta = %b, shortcut = %b%n", event.getCode().getName(), event.isControlDown(), event.isMetaDown(), event.isShortcutDown()); } }); textArea.focusedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observableValue, Boolean aBoolean, Boolean newVal) { final int[] line = { KeyEvent.VK_L, KeyEvent.VK_I, KeyEvent.VK_N, KeyEvent.VK_E }; if (newVal) { try { Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot(); for (int i = 0; i < line.length; i++) { robot.keyPress(line[i]); Thread.sleep(500); robot.keyRelease(line[i]); Thread.sleep(500); } robot.keyPress(KeyEvent.VK_BACK_SPACE); Thread.sleep(500); robot.keyRelease(KeyEvent.VK_BACK_SPACE); Thread.sleep(500); robot.keyPress(KeyEvent.VK_META); Thread.sleep(500); robot.keyPress(KeyEvent.VK_Z); Thread.sleep(500); robot.keyRelease(KeyEvent.VK_META); Thread.sleep(500); robot.keyRelease(KeyEvent.VK_Z); Thread.sleep(500); } catch (InterruptedException iex) { } // try { // java.awt.Robot robot = new java.awt.Robot(); // robot.delay(500); // for (int i = 0; i < line.length; i++) { // robot.keyPress(line[i]); // robot.keyRelease(line[i]); // } // // robot.keyPress(KeyEvent.VK_BACK_SPACE); // robot.keyRelease(KeyEvent.VK_BACK_SPACE); // robot.keyPress(KeyEvent.VK_META); // robot.keyPress(KeyEvent.VK_Z); // // robot.keyRelease(KeyEvent.VK_META); // robot.keyRelease(KeyEvent.VK_Z); // } catch (AWTException e) { // e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. // } } } }); HBox root = new HBox(5); root.getChildren().add(new Button("Button")); root.getChildren().add(textArea); scene = new Scene(root, 1200, 800); return scene; } }