Reputation: 51
I have an application, where the UI is built with FXML for the most part. But I am trying to add a menubar, and I used "pure java" without using FXML. I got no errors but the menubar is not visible. What did I do wrong?
Here is the code:
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
MenuBar menubar = new MenuBar ();
Menu file = new Menu ("File");
Menu options = new Menu ("options");
Menu help = new Menu ("help");
MenuItem save = new MenuItem ("save");
MenuItem close = new MenuItem ("close");
MenuItem open = new MenuItem ("open");
MenuItem exit = new MenuItem ("exit");
file.getItems().addAll(save, close, open, new SeparatorMenuItem(),exit);
Menu color = new Menu ("Colors");
Menu prefs = new Menu ("Preferences");
options.getItems().addAll(color, prefs);
MenuItem red = new MenuItem ("red");
color.getItems().add(red);
MenuItem setExample = new MenuItem ("SetExample");
prefs.getItems().add(setExample);
//root.getChildren().add(menubar);
menubar.getMenus().addAll(file, options, help);
BorderPane root2 = new BorderPane();
root2.setTop(menubar);
Upvotes: 0
Views: 1043
Reputation: 399
First of all you need a controller class for your fxml file.
See http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#controllers for an example of that architecture
There you inject all your components via the @FXML annotation.
Then the right way would be to define a region element in your fxml file as container element for your menubar
Finally you add your menu bar to the children of your region element. That code is placed in your controller class.
Upvotes: 1