Javafx 简明教程
JavaFX - MenuBar
menubar 是一个图形用户界面组件,它显示一行水平菜单,其中每个菜单都包含一个命令或选项列表。它位于窗口或屏幕的顶部,为用户提供了访问应用程序功能的便捷方式。一个典型的菜单栏看起来如下所示 −
Creating MenuBar in JavaFX
在 JavaFX 中,菜单栏控件由一个名为 MenuBar 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,我们可以在 JavaFX 中创建 MenuBar 控件。
除了 MenuBar 类,我们还需要以下类 −
Menu
Menu 类表示菜单栏中的单个菜单。它有一个 text 属性来定义其标签,以及一个 items 属性来保存菜单项列表。要创建一个 Menu,请使用下面给出的代码 −
//Creating a menu
Menu objectOfMenu = new Menu("nameOfMenu");
MenuItem
MenuItem 用于在菜单中创建单个命令或选项。它有一个 text 属性来定义其标签,以及一个 onAction 属性来定义当用户选择它时发生的情况。它使用以下代码创建 −
//Creating menu items for the menu
MenuItem menuItemObject = new MenuItem("nameOfMenuItem");
Example
以下示例说明如何在 JavaFX 应用程序中创建 MenuBar。使用名称 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);
}
}
要从命令提示符编译并执行已保存的 Java 文件,请使用以下命令−
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar
当我们执行上述代码时,它将生成以下输出。
How to add Icons to the MenuItems?
要向菜单项添加图标,我们调用 setGraphic() 方法,该方法接受 ImageView 类的对象。图标将出现在 MenuItem 名称的旁边。
Example
在以下 JavaFX 应用程序中,我们将演示如何在 MenuBar 中的菜单项添加图标。使用名称 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);
}
}
通过使用以下命令从命令提示符编译并执行保存的 Java 文件 −
javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxmenuBar
执行上述 JavaFX 代码后,它将生成以下输出。