package dtl.pkg6269; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.Event; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.control.SeparatorMenuItem; import javafx.stage.Stage; /** * * @author yjoan */ public class DTL6269 extends Application { @Override public void start(Stage stage) { stage.setTitle("DTL-6269"); final Scene scene = new Scene(new Group(), 800, 500); /////////////////////////////////////// final Menu mainMenu = new Menu("Main"); mainMenu.setOnMenuValidation(new EventHandler() { public void handle(Event t) { mainMenu.getItems().clear(); for (int i = 1; i < 4; i++) { Menu sectionMenu = new Menu(); sectionMenu.setText("menu" + i); sectionMenu.setOnShowing(new EventHandler() { @Override public void handle(Event t) { System.out.println("sectionMenu handler: do something"); } }); System.out.println("Adding sectionMenu " + i); mainMenu.getItems().add(sectionMenu); for (int j = 1; j < 7; j++) { MenuItem item = new MenuItem(); item.setText("menu item " + j); item.setOnAction(new EventHandler() { @Override public void handle(ActionEvent t) { System.out.println("menuItem handler: do something"); } }); System.out.println("Adding item " + j); sectionMenu.getItems().add(item); } } } }); // If the mainMenu is initialy empty then the onMenuValidation handler // set on mainMenu is never called, for some reason. mainMenu.getItems().add(new SeparatorMenuItem()); final MenuBar menuBar = new MenuBar(); menuBar.getMenus().add(mainMenu); menuBar.setUseSystemMenuBar(true); final Group root = (Group) scene.getRoot(); root.getChildren().clear(); root.getChildren().addAll(menuBar); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }