Class FxTimer

java.lang.Object
org.reactfx.util.FxTimer
All Implemented Interfaces:
Timer

public class FxTimer extends Object implements Timer
Provides factory methods for timers that are manipulated from and execute their action on the JavaFX application thread.
  • Field Details

    • actionTime

      private final javafx.util.Duration actionTime
    • timeline

      private final javafx.animation.Timeline timeline
    • action

      private final Runnable action
    • seq

      private long seq
  • Constructor Details

  • Method Details

    • create

      public static Timer create(Duration delay, Runnable action)
      Prepares a (stopped) timer that lasts for delay and whose action runs when timer ends.
    • runLater

      public static Timer runLater(Duration delay, Runnable action)
      Equivalent to create(delay, action).restart().
    • createPeriodic

      public static Timer createPeriodic(Duration interval, Runnable action)
      Prepares a (stopped) timer that lasts for interval and that executes the given action periodically when the timer ends.
    • runPeriodically

      public static Timer runPeriodically(Duration interval, Runnable action)
      Equivalent to createPeriodic(interval, action).restart().
    • createPeriodic0

      public static Timer createPeriodic0(Duration interval, Runnable action)
      Prepares a (stopped) timer that lasts for interval and that executes the given action periodically when the timer starts.
    • runPeriodically0

      public static Timer runPeriodically0(Duration interval, Runnable action)
      Equivalent to createPeriodic0(interval, action).restart().
    • restart

      public void restart()
      Description copied from interface: Timer
      Schedules the associated action to be executed after the associated delay. If the action is already scheduled but hasn't been executed yet, the timeout is reset, so that the action won't be executed before the full delay from now.
      Specified by:
      restart in interface Timer
    • stop

      public void stop()
      Description copied from interface: Timer
      If the associated action has been scheduled for execution but not yet executed, this method prevents it from being executed at all. This is also true in case the timer's timeout has already expired, but the associated action hasn't had a chance to be executed on the associated thread. Note that this is a stronger guarantee than the one given by Animation.stop():
       
       Timeline timeline = new Timeline(new KeyFrame(
               Duration.millis(1000),
               ae -> System.out.println("FIRED ANYWAY")));
       timeline.play();
      
       // later on the JavaFX application thread,
       // but still before the action has been executed
       timeline.stop();
      
       // later, "FIRED ANYWAY" may still be printed
       
       
      In contrast, using the FxTimer, the action is guaranteed not to be executed after stop():
       
       Timer timer = FxTimer.runLater(
               Duration.ofMillis(1000),
               () -> System.out.println("FIRED"));
      
       // later on the JavaFX application thread,
       // but still before the action has been executed
       timer.stop();
      
       // "FIRED" is guaranteed *not* to be printed
       
       
      Specified by:
      stop in interface Timer