”;
Event handlers are simply defined as the actions that are to be occurred after an event has taken place. These event handlers can be registered in order to handle more complex events; and you can use convenience methods to register event handlers within your JavaFX application. Event handlers can be created and registered in order to respond to events like mouse events, keyboard events, window events etc.
Some JavaFX classes define event handler properties, which provide a way to register event handlers. Setting an event handler property to a user-defined event handler automatically registers the handler to receive the corresponding event type. The setter methods for the event handler properties are convenience methods for registering event handlers.
Using Convenience Methods for Event Handling
Some of the classes in JavaFX define event handler properties. By setting the values to these properties using their respective setter methods, you can register to an event handler. These methods are known as convenience methods.
Most of these methods exist in the classes like Node, Scene, Window, etc., and they are available to all their sub classes. Following table describes various convenience methods that can be used on different events:
User Action | Event Type | EventHandler Properties |
---|---|---|
Pressing, releasing, or typing a key on keyboard. | KeyEvent |
onKeypressed onKeyReleased onKeyTyped |
Moving, Clicking, or dragging the mouse. | MouseEvent |
onMouseClicked onMouseMoved onMousePressed onMouseReleased onMouseEntered onMouseExited |
Pressing, Dragging, and Releasing of the mouse button. | MouseDragEvent |
onMouseDragged onMouseDragEntered onMouseDragExited onMouseDragged onMouseDragOver onMouseDragReleased |
Generating, Changing, Removing or Committing input from an alternate method. | InputMethodEvent | onInputMethodTextChanged |
Performing Drag and Drop actions supported by the platform. | DragEvent |
onDragDetected onDragDone onDragDropped onDragEntered onDragExited onDragOver |
Scrolling an object. | ScrollEvent |
onScroll onScrollStarted onScrollFinished |
Rotating an object. | RotateEvent |
onRotate onRotationFinished onRotationStarted |
Swiping an object upwards, downwards, to the right and left. | SwipeEvent |
onSwipeUP onSwipeDown onSwipeLeft onSwipeRight |
Touching an object. | TouchEvent |
onTouchMoved onTouchReleased onTouchStationary |
Zooming on an object. | ZoomEvent |
onZoom onZoomStarted onZoomFinished |
Requesting Context Menu. | ContextMenuEvent | onContextMenuRequested |
Pressing a button, showing or hiding a combo box, selecting a menu item. | ActionEvent | |
Editing an item in a list. | ListView.EditEvent | |
Editing an item in a table. | TableColumn.CellEditEvent | |
Editing an item in a tree. | TreeView.EditEvent | |
Encountering an error in a media player. | MediaErrorEvent | |
Showing or Hiding Menu. | Event | |
Hiding a pop-up window. | Event | |
Selecting or Closing a Tab. | Event | |
Showing, Minimizing, or Closing a Window. | WindowEvent |
Syntax
Following is the format of Convenience methods used for registering event handlers:
setOnEvent-type(EventHandler<? super event-class> value)
For example, to add a mouse event listener to a button, you can use the convenience method setOnMouseClicked() as shown below.
playButton.setOnMouseClicked((new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { System.out.println("Hello World"); pathTransition.play(); } }));
Example
The following program is an example that demonstrates the event handling in JavaFX using the convenience methods.
Save this code in a file with the name ConvenienceMethodsExample.java.
import javafx.animation.PathTransition; import javafx.application.Application; import static javafx.application.Application.launch; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.stage.Stage; import javafx.util.Duration; public class ConvenienceMethodsExample extends Application { @Override public void start(Stage stage) { //Drawing a Circle Circle circle = new Circle(); //Setting the position of the circle circle.setCenterX(300.0f); circle.setCenterY(135.0f); //Setting the radius of the circle circle.setRadius(25.0f); //Setting the color of the circle circle.setFill(Color.BROWN); //Setting the stroke width of the circle circle.setStrokeWidth(20); //Creating a Path Path path = new Path(); //Moving to the staring point MoveTo moveTo = new MoveTo(208, 71); //Creating 1st line LineTo line1 = new LineTo(421, 161); //Creating 2nd line LineTo line2 = new LineTo(226,232); //Creating 3rd line LineTo line3 = new LineTo(332,52); //Creating 4th line LineTo line4 = new LineTo(369, 250); //Creating 5th line LineTo line5 = new LineTo(208, 71); //Adding all the elements to the path path.getElements().add(moveTo); path.getElements().addAll(line1, line2, line3, line4, line5); //Creating the path transition PathTransition pathTransition = new PathTransition(); //Setting the duration of the transition pathTransition.setDuration(Duration.millis(1000)); //Setting the node for the transition pathTransition.setNode(circle); //Setting the path for the transition pathTransition.setPath(path); //Setting the orientation of the path pathTransition.setOrientation( PathTransition.OrientationType.ORTHOGONAL_TO_TAN GENT); //Setting the cycle count for the transition pathTransition.setCycleCount(50); //Setting auto reverse value to true pathTransition.setAutoReverse(false); //Creating play button Button playButton = new Button("Play"); playButton.setLayoutX(300); playButton.setLayoutY(250); circle.setOnMouseClicked (new EventHandler<javafx.scene.input.MouseEvent>() { @Override public void handle(javafx.scene.input.MouseEvent e) { System.out.println("Hello World"); circle.setFill(Color.DARKSLATEBLUE); } }); playButton.setOnMouseClicked((new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { System.out.println("Hello World"); pathTransition.play(); } })); //Creating stop button Button stopButton = new Button("stop"); stopButton.setLayoutX(250); stopButton.setLayoutY(250); stopButton.setOnMouseClicked((new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { System.out.println("Hello World"); pathTransition.stop(); } })); //Creating a Group object Group root = new Group(circle, playButton, stopButton); //Creating a scene object Scene scene = new Scene(root, 600, 300); scene.setFill(Color.LAVENDER); //Setting title to the Stage stage.setTitle("Convenience Methods Example"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Compile and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls ConvenienceMethodsExample.java java --module-path %PATH_TO_FX% --add-modules javafx.controls ConvenienceMethodsExample
Output
On executing, the above program generates a JavaFX window as shown below. Here click on the play button to start the animation and click on the stop button to stop the animation.
”;