2014-06-17 7 views
5

Voglio rendere la mia applicazione JFX simulare i tasti freccia (quando sono registrati in un campo di testo), ma non riesco a capire come inviare qualcosa di diverso da stringhe o byte .Come simulare a livello di codice tasti freccia in Java FX

sto immaginando qualcosa di simile:

static EventHandler<KeyEvent> KEY() { 
    E = new EventHandler<KeyEvent>() { 
     @Override 
     public void handle(KeyEvent ke) { 
      if (ke.getCode().equals(KeyCode.UP)) { 
       try { 
        //someObject.SimulateKeyPress(KeyCode.UP); 

        //OR 

        //coolObject.SendKey((char)KEY_UPKEY)); 
       } catch (Exception ex) { 
        //Teleport goats 
       } 
      } 
     } 
    }; 

    return E; 
} 

risposta

8

utilizzare la classe Robot

try { 
    Robot r = new Robot(); 
    //there are other methods such as positioning mouse and mouseclicks etc. 
    r.keyPress(java.awt.event.KeyEvent.VK_UP); 
    r.keyRelease(java.awt.event.KeyEvent.VK_UP); 
} catch (AWTException e) { 
    //Teleport penguins 
} 
+1

Cheers, ha funzionato perfettamente. –

+0

Questo simula pressioni di tasti in qualsiasi applicazione attualmente focalizzata, non necessariamente correlata al processo javafx o jvm. –

0

Non è possibile creare un'istanza del tipo di robot. Si consiglia di fare:

Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot(); 
+1

Si noti inoltre che da Java 9 in poi, le API 'com.sun' potrebbero non essere visibili ai programmatori di applicazioni che utilizzano il JDK. – jewelsea

+0

oh grazie! e qual è l'alternativa? –

+1

Non so da dove hai preso questo, ma puoi assolutamente istanziare 'Robot': https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html#Robot-- –

Problemi correlati