package test; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.PerspectiveCamera; import javafx.scene.PointLight; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.Box; import javafx.stage.Stage; public class MenuBreaks3DRendering extends Application { private Stage stage; private double sceneAnchorX, sceneAnchorY; @Override public void start(Stage stage) { this.stage = stage; stage.setTitle("Box drag test"); Group root = new Group(); PointLight light = new PointLight(Color.WHITE); light.setTranslateX(1000); light.setTranslateY(1000); light.setTranslateZ(-1000000); root.getChildren().add(light); root.getChildren().add(menu()); Scene scene = new Scene(root, 500, 500, true); scene.setFill(Color.GRAY); PerspectiveCamera cam = new PerspectiveCamera(); scene.setCamera(cam); final Box box = new Box(100, 100, 100); box.setTranslateX(250); box.setTranslateY(250); box.setMaterial(new PhongMaterial(Color.RED)); box.setOnMousePressed(new EventHandler() { @Override public void handle(MouseEvent event) { sceneAnchorX = event.getSceneX(); sceneAnchorY = event.getSceneY(); event.consume(); } }); box.setOnMouseDragged(new EventHandler() { @Override public void handle(MouseEvent event) { box.setTranslateX(box.getTranslateX() + event.getSceneX() - sceneAnchorX); box.setTranslateY(box.getTranslateY() + event.getSceneY() - sceneAnchorY); sceneAnchorX = event.getSceneX(); sceneAnchorY = event.getSceneY(); event.consume(); } }); root.getChildren().add(box); stage.setScene(scene); stage.show(); } private MenuBar menu() { MenuBar menuBar = new MenuBar(); Menu menu1 = new Menu("MenuItem1"); Menu menu2 = new Menu("MenuItem2"); Menu menu3 = new Menu("MenuItem2"); menuBar.getMenus().setAll(menu1, menu2, menu3); menuBar.prefWidthProperty().bind(stage.maxWidthProperty()); return menuBar; } public static void main(String[] args) { System.setProperty("prism.dirtyopts", "false"); launch(args); } }