package dialogwithcontextmenu; import java.util.Optional; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.ContextMenu; import javafx.scene.control.Dialog; import javafx.scene.control.DialogPane; import javafx.scene.control.Label; import javafx.scene.control.MenuItem; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class DialogWithContextMenu extends Application { @Override public void start(Stage primaryStage) { ContextMenu cm = new ContextMenu(new MenuItem("Sample Item"), new MenuItem("Hit 'Esc'")); System.out.println("ContextMenu.hideOnEscape = "+cm.isHideOnEscape()); Label label = new Label("Activate a context menu on this label. Dismiss with 'Esc'."); label.setContextMenu(cm); //label.setOnContextMenuRequested(doContextMenu); VBox dlgContent = new VBox(4); dlgContent.getChildren().setAll(label); DialogPane dlgPane = new DialogPane(); dlgPane.getButtonTypes().setAll(ButtonType.OK, ButtonType.CANCEL); dlgPane.setContent(dlgContent); Dialog dlg = new Dialog(); dlg.setDialogPane(dlgPane); Button btn = new Button("Show Dialog"); btn.setOnAction((ActionEvent event) -> { Optional result = dlg.showAndWait(); System.out.println("Result: "+result); }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Dialog ContextMenu Bug"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }