title: How to drag an undecorated window (stage) of JavaFX
body: <p>I have this undecorated window:</p>
  
  <pre><code>public static void initStartPage(final Stage primaryStage) {
  
          final Stage startPage = new Stage();
          startPage.initStyle(StageStyle.UNDECORATED);
          //startPage.initOwner(primaryStage);
          //startPage.toFront();
          Scene scene = new Scene(agentsPanel(), 900, 500);
          startPage.setScene(scene);
          startPage.show();
  
      }
  </code></pre>
  
  <p>I would like to know how I can make it a <strong>draggable undecorated window</strong>?
  I want to change its position when the user selects the window with the right mouse button and then move the mouse while keeping the mouse button pressed down.</p>
  
  <p>P.S. I tested this solution, but it's not working:</p>
  
  <pre><code>private static FlowPane flow;
      private static BorderPane bpi;
  
      public static void initStartPage(final Stage primaryStage) {
  
          final Stage startPage = new Stage();
          startPage.initStyle(StageStyle.UNDECORATED);
          startPage.initOwner(primaryStage);
          //startPage.toFront();
          Scene scene = new Scene(agentsPanel(primaryStage), 900, 500);
          startPage.setScene(scene);
          startPage.show();
  
      }
  
      private static double xOffset = 0;
      private static double yOffset = 0;
  
      public static BorderPane agentsPanel(final Stage primaryStage) {
  
          BorderPane bp = new BorderPane();
          bp.setPrefSize(900, 500);
          bp.setMaxSize(900, 500);
  
          HBox thb = new HBox(10); // Set spacing between each child into the HBox
          thb.setPadding(new Insets(15, 15, 15, 15));
  
  
          HBox bhb = new HBox(10); // Set spacing between each child into the HBox
          bhb.setPadding(new Insets(15, 15, 15, 15));
  
          bp.setTop(thb);
          bp.setBottom(bhb);
          bp.setCenter(navigationPanel());
  
  
          bp.setOnMousePressed(new EventHandler&lt;MouseEvent&gt;() {
              @Override
              public void handle(MouseEvent event) {
                  xOffset = event.getSceneX();
                  yOffset = event.getSceneY();
              }
          });
          bp.setOnMouseDragged(new EventHandler&lt;MouseEvent&gt;() {
              @Override
              public void handle(MouseEvent event) {
                  primaryStage.setX(event.getScreenX() - xOffset);
                  primaryStage.setY(event.getScreenY() - yOffset);
              }
          });
  
          return bp;
  
      }
  </code></pre>