”;
A menubar is a graphical user interface component that displays a horizontal row of menus, each containing a list of commands or options. It is located at the top of a window or screen, and provides a convenient way for users to access the functionality of an application. A typical menubar looks like the below figure −
Creating MenuBar in JavaFX
In JavaFX, the menubar control is represented by a class named MenuBar. This class belongs to the package javafx.scene.control. By instantiating this class, we can create a MenuBar control in JavaFX.
In addition to the MenuBar class, we also require the following classes −
Menu
The Menu class represents a single menu in the menubar. It has a text property that defines its label, and an items property that holds a list of menu items. To create a Menu, use the code given below −
//Creating a menu Menu objectOfMenu = new Menu("nameOfMenu");
MenuItem
The MenuItem is used to create a single command or option within a menu. It has a text property that defines its label, and an onAction property that defines what happens when the user selects it. It is created by using the below code −
//Creating menu items for the menu MenuItem menuItemObject = new MenuItem("nameOfMenuItem");
Example
The following example illustrates how to create a MenuBar in JavaFX application. Save this code in a file with the name JavafxmenuBar.java.
import javafx.application.Application; 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.stage.Stage; public class JavafxmenuBar extends Application { public void start(Stage stage) { //Creating the first menu Menu category = new Menu("Category"); //Creating menu items for the menu MenuItem itemOne = new MenuItem("Programming"); MenuItem itemTwo = new MenuItem("Cyber Security"); MenuItem itemThree = new MenuItem("Marketing"); //Adding all the items to the category category.getItems().addAll(itemOne, itemTwo, itemThree); //Creating another menu Menu library = new Menu("Library"); //Creating menu items for the library menu MenuItem itemFour = new MenuItem("HTML"); MenuItem itemFive = new MenuItem("Java"); MenuItem itemSix = new MenuItem("JavaFX"); //Adding all the items to library menu library.getItems().addAll(itemFour, itemFive, itemSix); //Creating the third menu Menu articles = new Menu("Articles"); //Creating menu items for the articles MenuItem itemSeven = new MenuItem("Constructor"); MenuItem itemEight = new MenuItem("Inheritance"); MenuItem itemNine = new MenuItem("Current Affairs"); //Adding all items to the menu articles.getItems().addAll(itemSeven, itemEight, itemNine); //Instantiating the MenuBar class MenuBar newmenubar = new MenuBar(); //Adding all the menus to the MenuBar object newmenubar.getMenus().addAll(category, library, articles); //Setting the stage Group newgroup = new Group(newmenubar); Scene scene = new Scene(newgroup, 600, 400); stage.setTitle("MenuBar in JavaFX"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
To compile and execute the saved Java file from the command prompt, use the following commands −
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar.java java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar
Output
When we execute the above code, it will generate the following output.
How to add Icons to the MenuItems?
To add icons to the menuitems, we call the setGraphic() method which accepts an object of ImageView class. The icon will be appear next to the MenuItem name.
Example
In the following JavaFX application, we are going to demonstrate how to add icons for the menuitems within MenuBar. Save this code in a file with the name JavafxmenuBar.java.
import javafx.application.Application; 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.stage.Stage; import java.io.File; import javafx.scene.image.ImageView; public class JavafxmenuBar extends Application { public void start(Stage stage) { //Creating the first menu Menu category = new Menu("Category"); //Creating menu items for the menu MenuItem itemOne = new MenuItem("Programming"); MenuItem itemTwo = new MenuItem("Cyber Security"); MenuItem itemThree = new MenuItem("Marketing"); // adding icons to the menuitems itemOne.setGraphic(new ImageView("file:programming.png")); itemTwo.setGraphic(new ImageView("file:cyber.png")); itemThree.setGraphic(new ImageView("file:marketing.png")); //Adding all the items to the category category.getItems().addAll(itemOne, itemTwo, itemThree); //Creating another menu Menu library = new Menu("Library"); //Creating menu items for the library menu MenuItem itemFour = new MenuItem("HTML"); MenuItem itemFive = new MenuItem("Java"); MenuItem itemSix = new MenuItem("JavaFX"); //Adding all the items to library menu library.getItems().addAll(itemFour, itemFive, itemSix); //Creating the third menu Menu articles = new Menu("Articles"); //Creating menu items for the articles MenuItem itemSeven = new MenuItem("Constructor"); MenuItem itemEight = new MenuItem("Inheritance"); MenuItem itemNine = new MenuItem("Current Affairs"); //Adding all items to the menu articles.getItems().addAll(itemSeven, itemEight, itemNine); //Instantiating the MenuBar class MenuBar newmenubar = new MenuBar(); //Adding all the menus to the MenuBar object newmenubar.getMenus().addAll(category, library, articles); //Setting the stage Group newgroup = new Group(newmenubar); Scene scene = new Scene(newgroup, 600, 400); stage.setTitle("MenuBar in JavaFX"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
Compile and execute the saved Java file from the command prompt by using the following commands −
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar.java java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar
Output
On executing the above JavaFX code, it will generate the following output.
”;