El siguiente código es un ejemplo para conocer cómo se puede detectar si el usuario ha pulsado algún botón del ratón sobre la ventana que se ha creado en JavaFX.

Para que la detección se haga en cualquier parte de la ventana, se han utilizado los métodos setOnMouse_____ que ofrece la clase Scene, pero si se deseara conocer si se ha pulsado el ratón sobre algún elemento concreto de la ventana, también existen métodos similares para las clases herededas de la clase Node, como por ejemplo Canvas, ImageView, y todos los tipos de contenedores (StackPane, HBox, VBox, Group, etc).

El ejemplo mostrará en la salida estándar si se ha pulsado algún botón del ratón indicando las coordenadas dentro de la ventana en la que se ha pulsado, y de la misma manera ocurre si se suelte el botón, o si se hace clic con algún botón del ratón (clic = pulsar + soltar). Además, en el control realizado para detectar clic en algún botón, se indica si se ha hecho con el botón principal o con el secundario, lo cual se podrá hacer de manera similar en cualquiera de los otros eventos del ratón.

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;

public class JavaFXMouseEventsSample extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setScene(scene);
        primaryStage.show();
        
        // Detectar ratón pulsado
        scene.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
// Insertar aquí el código a ejecutar cuando se pulse el ratón System.out.println("Mouse pressed X : Y - " + mouseEvent.getX() + " : " + mouseEvent.getY()); } }); // Detectar ratón soltado scene.setOnMouseReleased(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent mouseEvent) {
              // Insertar aquí el código a ejecutar cuando se suelte el ratón System.out.println("Mouse released X : Y - " + mouseEvent.getX() + " : " + mouseEvent.getY()); } }); // Detectar clic en ratón (pulsado y soltado) scene.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent mouseEvent) {
              // Insertar aquí el código a ejecutar cuando se haga clic en el ratón System.out.println("Mouse clicked X : Y - " + mouseEvent.getX() + " : " + mouseEvent.getY()); // También se puede comprobar sobre qué botón se ha actuado, // válido para cualquier acción (pressed, released, clicked, etc) if(mouseEvent.getButton() == MouseButton.PRIMARY) { System.out.println("Botón principal"); } else if(mouseEvent.getButton() == MouseButton.SECONDARY) { System.out.println("Botón secundario"); } } }); /* Más información: En la API de JavaFX para la clase Scene se puede ver los distintos métodos existentes para detectar eventos del ratón. Son aquellos cuyo nombre empieza por setOnMouse...... https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Scene.html */ } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }