Saltar al contenido

Cómo arrastrar una ventana sin decorar (escenario) de JavaFX

Si te encuentras con alguna parte que no comprendes puedes dejarnos un comentario y te ayudaremos rápidamente.

Solución:

Simplemente cambie su método setOnMousePressed a esto:

bp.setOnMousePressed(new EventHandler() 
            @Override
            public void handle(MouseEvent event) 
                xOffset = primaryStage.getX() - event.getScreenX();
                yOffset = primaryStage.getY() - event.getScreenY();
            
        );

y su setOnMouseDragged a esto:

bp.setOnMouseDragged(new EventHandler() 
            @Override
            public void handle(MouseEvent event) 
                primaryStage.setX(event.getScreenX() + xOffset);
                primaryStage.setY(event.getScreenY() + yOffset);
            
        );

El @Eeliyaanswer funciona bien. Sin embargo, el código será más corto si usa el siguiente código porque no necesitamos declarar variables.

Necesitamos que setOnMouseDragged una y otra vez cada vez que setOnMouseDragged despedido, pero creo que no está causando el problema.

bp.setOnMousePressed(pressEvent -> 
    bp.setOnMouseDragged(dragEvent -> 
        primaryStage.setX(dragEvent.getScreenX() - pressEvent.getSceneX());
        primaryStage.setY(dragEvent.getScreenY() - pressEvent.getSceneY());
    );
);

Espero eso ayude

Te mostramos las comentarios y valoraciones de los lectores

Puedes añadir valor a nuestro contenido tributando tu experiencia en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *