title: JavaFx, how to add menuBar and drawingPane
body: <p>I'an busy with some demo, drawing some lines in a scroll window. So far so good, but now it's possible to draw lines on the menuBar, which should not be possible of course. See code below. Please help!</p>
  
  <p>This is what happens:</p>
  
  <p><a href="http://i.stack.imgur.com/Bh4zZ.png" rel="nofollow">See output here</a></p>
  
  <p>The wrong code:</p>
  
  <pre><code>package Example12a;
  
  import javafx.application.Application;
  import javafx.event.ActionEvent;
  import javafx.event.EventHandler;
  import javafx.scene.Scene;
  import javafx.scene.control.Menu;
  import javafx.scene.control.MenuBar;
  import javafx.scene.control.MenuItem;
  import javafx.scene.control.ScrollPane;
  import javafx.scene.layout.BorderPane;
  import javafx.scene.layout.Pane;
  import javafx.scene.shape.Line;
  import javafx.stage.Stage;
  
  public class Example12a extends Application {
  
      public static void main(String[] args) {
          launch(args);
      }
  
      private Line curLine;
  
      @Override
      public void start(Stage stage) throws Exception {
          Pane drawingPane = new Pane();
          BorderPane theBorderPane = new BorderPane();
  
          drawingPane.setPrefSize(800, 800);
          drawingPane.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
  
          MenuBar menuBar = new MenuBar();
          // --- Menu File
          Menu menuFile = new Menu("File");
          MenuItem add = new MenuItem("Save");
          add.setOnAction(new EventHandler&lt;ActionEvent&gt;() {
              @Override
              public void handle(ActionEvent t) {
                  System.out.println("Save");
              }
          }); 
          menuFile.getItems().addAll(add);
          //yOffset = (int)menuBar.getHeight();        
          Menu menuEdit = new Menu("Edit");
          Menu menuView = new Menu("View");
          menuBar.getMenus().addAll(menuFile, menuEdit, menuView);
          theBorderPane.setTop(menuBar);
  
          ScrollPane scrollPane = new ScrollPane(theBorderPane);
          scrollPane.setPrefSize(300, 300);
          scrollPane.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
          scrollPane.setFitToWidth(true);
          scrollPane.setFitToHeight(true);
          scrollPane.setStyle("-fx-focus-color: transparent;");
  
          theBorderPane.setOnMousePressed(event -&gt; {
              if (!event.isPrimaryButtonDown()) {
                  return;
              }
  
              curLine = new Line(
                  event.getX(), event.getY(), 
                  event.getX(), event.getY()
              );
              theBorderPane.getChildren().add(curLine);
          });
  
          theBorderPane.setOnMouseDragged(event -&gt; {
              if (!event.isPrimaryButtonDown()) {
                  return;
              }
  
              if (curLine == null) {
                  return;
              }
  
              curLine.setEndX(event.getX());
              curLine.setEndY(event.getY());
  
              double mx = Math.max(curLine.getStartX(), curLine.getEndX());
              double my = Math.max(curLine.getStartY(), curLine.getEndY());
  
              if (mx &gt; theBorderPane.getMinWidth()) {
                  theBorderPane.setMinWidth(mx);
              }
  
              if (my &gt; theBorderPane.getMinHeight()) {
                  theBorderPane.setMinHeight(my);
              }
          });
  
          theBorderPane.setOnMouseReleased(event -&gt; curLine = null);
  
          theBorderPane.setCenter(drawingPane);
          Scene scene = new Scene(scrollPane);
          stage.setMinWidth(100);
          stage.setMinHeight(100);
          stage.setScene(scene);
  
          stage.show();
      }
  }
  </code></pre>