diff --git a/javafx/src/main/java/com/baeldung/button/eventhandler/ButtonEventHandlerController.java b/javafx/src/main/java/com/baeldung/button/eventhandler/ButtonEventHandlerController.java new file mode 100644 index 0000000000..8d54a366f0 --- /dev/null +++ b/javafx/src/main/java/com/baeldung/button/eventhandler/ButtonEventHandlerController.java @@ -0,0 +1,64 @@ +package com.baeldung.button.eventhandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.effect.DropShadow; +import javafx.scene.effect.Effect; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import javafx.scene.text.Font; + +public class ButtonEventHandlerController { + + private static final Logger logger = LoggerFactory.getLogger(ButtonEventHandlerController.class); + + @FXML + private Button button; + + @FXML + private Label label; + + @FXML + private void initialize() { + button.setText("Click me"); + + handleClickEvent(); + handleHoverEffect(); + reuseRightClickEventHandler(); + } + + private void handleClickEvent() { + button.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + logger.info("OnAction {}", event); + } + }); + + button.setOnAction(event -> logger.info("OnAction {}", event)); + button.setOnAction(event -> logger.info("OnAction2 {}", event)); + } + + private void handleHoverEffect() { + Effect shadow = new DropShadow(); + button.setOnMouseEntered(e -> button.setEffect(shadow)); + button.setOnMouseExited(e -> button.setEffect(null)); + } + + private void reuseRightClickEventHandler() { + EventHandler rightClickHandler = event -> { + if (MouseButton.SECONDARY.equals(event.getButton())) { + button.setFont(new Font(button.getFont() + .getSize() + 1)); + } + }; + button.setOnMousePressed(rightClickHandler); + label.setOnMousePressed(rightClickHandler); + } +} diff --git a/javafx/src/main/java/com/baeldung/button/eventhandler/Main.java b/javafx/src/main/java/com/baeldung/button/eventhandler/Main.java new file mode 100644 index 0000000000..0c4e2eaa08 --- /dev/null +++ b/javafx/src/main/java/com/baeldung/button/eventhandler/Main.java @@ -0,0 +1,24 @@ +package com.baeldung.button.eventhandler; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.Pane; +import javafx.stage.Stage; + +public class Main extends Application { + + public static void main(String[] args) { + launch(args); + } + + @Override + public void start(Stage primaryStage) throws Exception { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/button_event-handler.fxml")); + Pane page = loader.load(); + + primaryStage.setTitle("Button event handler"); + primaryStage.setScene(new Scene(page)); + primaryStage.show(); + } +} diff --git a/javafx/src/main/resources/button_event-handler.fxml b/javafx/src/main/resources/button_event-handler.fxml new file mode 100644 index 0000000000..2f7b1eeff6 --- /dev/null +++ b/javafx/src/main/resources/button_event-handler.fxml @@ -0,0 +1,16 @@ + + + + + +
+
+ + + +