JavaFX
Posición del ratón
En este ejemplo os he querido mostrar la utilización de un evento de ratón. La interfaz muestra un panel de otro color y una etiqueta. Cuando el ratón entra en el panel, en la etiqueta se muestra la posición X y la posición Y del ratón dentro de dicho panel.
Para ello hace uso de los métodos setOnMouseMoved
y setOnMouseExited
para registrar los eventos del ratón al entrar al panel y que así pueda mostrar su posición en la etiqueta y los eventos del ratón al salir del panel para así poder limpiar la última posición. Para consultar la posición X e Y del ratón se hace uso del método getX
y getY
del tipo de evento MouseEvent
.
La interfaz de dicha aplicación es la que muestro a continuación.
El código asociado es el que sigue.
package javafx.eventos;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class PosicionRaton extends Application {
private Label lbPosicionX;
private Label lbPosicionY;
private static final String POS_X = "Posición X:";
private static final String POS_Y = "Posición Y:";
private void mostrarValor(MouseEvent e) {
lbPosicionX.setText(POS_X + e.getX());
lbPosicionY.setText(POS_Y + e.getY());
}
private void limpiarValor() {
lbPosicionX.setText(POS_X);
lbPosicionY.setText(POS_Y);
}
@Override
public void start(Stage escenarioPrincipal) {
try {
VBox raiz = new VBox(30);
raiz.setPadding(new Insets(20));
raiz.setAlignment(Pos.CENTER);
Pane panel = new Pane();
panel.setMinSize(150, 150);
panel.setMaxSize(150, 150);
panel.setStyle("-fx-border-color: blue; "
+ "-fx-border-radius: 5; "
+ "-fx-background-color: #cce6ff;"
+ "-fx-background-radius: 5");
panel.setOnMouseMoved(this::mostrarValor);
panel.setOnMouseExited(e -> limpiarValor());
HBox hbValores = new HBox(10);
hbValores.setAlignment(Pos.CENTER);
lbPosicionX = new Label();
lbPosicionX.setText(POS_X);
lbPosicionY = new Label();
lbPosicionY.setText(POS_Y);
hbValores.getChildren().addAll(lbPosicionX, lbPosicionY);
raiz.getChildren().addAll(panel, hbValores);
Scene escena = new Scene(raiz, 350, 250);
escenarioPrincipal.setTitle("Posición ratón");
escenarioPrincipal.setScene(escena);
escenarioPrincipal.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}