Menu Bar


SUBMITTED BY: knightley

DATE: Sept. 3, 2015, 9:16 a.m.

FORMAT: Java

SIZE: 5.6 kB

HITS: 449

  1. import javafx.application.Application;
  2. import javafx.geometry.Insets;
  3. import javafx.scene.Scene;
  4. import javafx.scene.control.*;
  5. import javafx.scene.image.Image;
  6. import javafx.scene.image.ImageView;
  7. import javafx.scene.input.KeyCombination;
  8. import javafx.scene.input.MouseButton;
  9. import javafx.scene.layout.BackgroundFill;
  10. import javafx.scene.layout.BorderPane;
  11. import javafx.scene.layout.CornerRadii;
  12. import javafx.scene.layout.VBox;
  13. import javafx.scene.paint.Color;
  14. import javafx.scene.paint.CycleMethod;
  15. import javafx.scene.paint.LinearGradient;
  16. import javafx.scene.paint.Stop;
  17. import javafx.scene.shape.Rectangle;
  18. import javafx.stage.Stage;
  19. public class MenuExample extends Application {
  20. public static void main(String[] args) {
  21. launch(args);
  22. }
  23. private Stage stage = null;
  24. public Menu createFileMenu() {
  25. Menu fileMenu = new Menu("File");
  26. Image icon = new Image(Example01.class.getResourceAsStream("/images/new.png"));
  27. MenuItem itemNew = new MenuItem("New...", new ImageView(icon));
  28. itemNew.setAccelerator(KeyCombination.keyCombination("Ctrl+N"));
  29. itemNew.setOnAction(event -> System.out.println("New... menu item clicked."));
  30. // create open menu item
  31. MenuItem itemOpen = new MenuItem("Open...");
  32. itemOpen.setOnAction(event -> System.out.println("Open... menu item clicked."));
  33. // create exit menu item
  34. MenuItem itemExit = new MenuItem("Exit");
  35. itemExit.setAccelerator(KeyCombination.keyCombination("Ctrl+X"));
  36. itemExit.setOnAction(event -> {
  37. System.out.println("Exit menu item clicked.");
  38. // stop the application
  39. stage.hide();
  40. });
  41. // add menu items to the menu
  42. fileMenu.getItems().addAll(
  43. itemNew,
  44. itemOpen,
  45. itemExit
  46. );
  47. return fileMenu;
  48. }
  49. public Menu createEditMenu() {
  50. Menu editMenu = new Menu("Edit");
  51. MenuItem itemCopy = new MenuItem("Copy");
  52. itemCopy.setOnAction(event -> System.out.println("Copy menu item clicked."));
  53. MenuItem itemCut = new MenuItem("Cut");
  54. itemCut.setOnAction(event -> System.out.println("Cut menu item clicked."));
  55. // add menu items to the menu
  56. editMenu.getItems().addAll(
  57. itemCopy,
  58. itemCut,
  59. createPasteMenu()
  60. );
  61. return editMenu;
  62. }
  63. public Menu createPasteMenu() {
  64. Menu pasteMenu = new Menu("Paste as");
  65. MenuItem itemPasteAsText = new MenuItem("Text");
  66. itemPasteAsText.setOnAction(event -> System.out.println("Paste as Text menu item clicked."));
  67. MenuItem itemPasteAsContent = new MenuItem("Content");
  68. itemPasteAsContent.setOnAction(event -> System.out.println("Paste as Content menu item clicked."));
  69. MenuItem itemPasteAsFormatting = new MenuItem("Formatting");
  70. itemPasteAsFormatting.setOnAction(event -> System.out.println("Paste as Formatting menu item clicked."));
  71. // add menu items to the menu
  72. pasteMenu.getItems().addAll(
  73. itemPasteAsText,
  74. itemPasteAsContent,
  75. itemPasteAsFormatting
  76. );
  77. return pasteMenu;
  78. }
  79. public MenuBar createMenuBar() {
  80. MenuBar menuBar = new MenuBar();
  81. menuBar.getMenus().addAll(
  82. createFileMenu(),
  83. createEditMenu()
  84. );
  85. return menuBar;
  86. }
  87. public ContextMenu createContextMenu() {
  88. ContextMenu contextMenu = new ContextMenu(
  89. createFileMenu(),
  90. createEditMenu()
  91. );
  92. return contextMenu;
  93. }
  94. public Scene createScene() {
  95. BorderPane bp = new BorderPane();
  96. VBox center = new VBox();
  97. center.setSpacing(10);
  98. Rectangle rect = createRectangle();
  99. center.getChildren().addAll(
  100. createMenuButton(),
  101. createSplitMenuButton(),
  102. rect
  103. );
  104. // make the context menu appear when right-click on the center VBox
  105. ContextMenu contextMenu = createContextMenu();
  106. rect.setOnMousePressed(event -> {
  107. if (event.getButton() == MouseButton.SECONDARY) {
  108. contextMenu.show(stage, event.getScreenX(), event.getScreenY());
  109. }
  110. });
  111. // set the menu bar to the top section, rest in center
  112. bp.setTop(createMenuBar());
  113. bp.setCenter(center);
  114. return new Scene(bp, 500, 400);
  115. }
  116. @Override
  117. public void start(Stage primaryStage) throws Exception {
  118. stage = primaryStage;
  119. primaryStage.setTitle("Example 1");
  120. primaryStage.setScene(createScene());
  121. primaryStage.show();
  122. }
  123. }

comments powered by Disqus