4

I have my JavaFX 8 Scene going nicely. Now, while everything else is happening, I would like to continuously check for any KeyEvent/KeyCode while the program is running. I have a Timeline called timeline set to INDEFINITE and I've set my cycle count to indefinite with

timeline.setCycleCount(Timeline.INDEFINITE);

I'm looking for an easy method that is also clean and won't make my program choppy.

JCoder
  • 189
  • 1
  • 3
  • 17
  • Why do you need a `TimeLine` for listening to `KeyEvents`? – ItachiUchiha Mar 21 '15 at 03:52
  • I'm doing animations, that's all I have so far. I now want to be able to do stuff like, restart the animation, or display a button on the screen, or anything else, based on user input from keys. I only mentioned it because I was worried about interruptions. – JCoder Mar 21 '15 at 04:23

1 Answers1

11

You can use a KeyEvent listener to listen to when key is pressed, release, typed or any of them. It doesn't matter what you have running on other threads, whether that's some infinite loop, or anything else; if the user presses a button, the listener will be called.

You just need to add a listener to the scene and the key event which you want to listen to.

scene.addEventHandler(KeyEvent.KEY_PRESSED, (key) -> {
      if(key.getCode()==KeyCode.ENTER) {
          System.out.println("You pressed enter");
      }
});
Logan
  • 3
  • 3
ItachiUchiha
  • 36,135
  • 10
  • 122
  • 176