📜  javafx 菜单栏(1)

📅  最后修改于: 2023-12-03 15:01:36.406000             🧑  作者: Mango

JavaFX 菜单栏

JavaFX 菜单栏是用户界面中的一种常见组件,它通常位于窗口顶部,在这里您可以添加各种菜单项以及子菜单项,通过JavaFX的菜单栏,您可以轻松地构建一个完整的应用程序界面。

创建菜单栏

在JavaFX中创建菜单栏很简单,只需要使用MenuBar类即可。下面是一个基本的示例:

MenuBar menuBar = new MenuBar();
创建菜单

在菜单栏中添加菜单也相对简单,只需要使用Menu类即可。下面是一个示例:

Menu fileMenu = new Menu("File");
创建菜单项

JavaFX支持使用MenuItem类创建菜单项,您可以将菜单项添加到菜单中,如下所示:

MenuItem openMenuItem = new MenuItem("Open");
fileMenu.getItems().add(openMenuItem);
创建子菜单

在JavaFX中,也可以使用SubMenu类创建子菜单,如下所示:

Menu subMenu = new Menu("Sub-menu");
MenuItem subMenuItem1 = new MenuItem("Sub-menu item 1");
MenuItem subMenuItem2 = new MenuItem("Sub-menu item 2");
subMenu.getItems().addAll(subMenuItem1, subMenuItem2);
fileMenu.getItems().add(new SeparatorMenuItem());
fileMenu.getItems().add(subMenu);
设置菜单事件

在JavaFX中,您可以为菜单项添加事件处理程序。下面是一个示例:

openMenuItem.setOnAction(e -> {
    FileChooser fileChooser = new FileChooser();
    File selectedFile = fileChooser.showOpenDialog(stage);
    if (selectedFile != null) {
        // Do something with the selected file
    }
});
完整示例

下面是一个完整的JavaFX菜单栏示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

import java.io.File;

public class MenuBarExample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane root = new BorderPane();

        MenuBar menuBar = new MenuBar();
        root.setTop(menuBar);

        // Create File menu
        Menu fileMenu = new Menu("File");
        MenuItem newMenuItem = new MenuItem("New");
        MenuItem openMenuItem = new MenuItem("Open");
        MenuItem saveMenuItem = new MenuItem("Save");
        MenuItem exitMenuItem = new MenuItem("Exit");
        fileMenu.getItems().addAll(newMenuItem, openMenuItem, saveMenuItem, new SeparatorMenuItem(), exitMenuItem);

        openMenuItem.setOnAction(e -> {
            FileChooser fileChooser = new FileChooser();
            File selectedFile = fileChooser.showOpenDialog(primaryStage);
            if (selectedFile != null) {
                // Do something with the selected file
            }
        });

        exitMenuItem.setOnAction(e -> {
            primaryStage.close();
        });

        // Create Edit menu
        Menu editMenu = new Menu("Edit");
        MenuItem cutMenuItem = new MenuItem("Cut");
        MenuItem copyMenuItem = new MenuItem("Copy");
        MenuItem pasteMenuItem = new MenuItem("Paste");
        editMenu.getItems().addAll(cutMenuItem, copyMenuItem, pasteMenuItem);

        // Create Help menu
        Menu helpMenu = new Menu("Help");
        MenuItem aboutMenuItem = new MenuItem("About");
        helpMenu.getItems().add(aboutMenuItem);

        menuBar.getMenus().addAll(fileMenu, editMenu, helpMenu);

        primaryStage.setScene(new Scene(root, 400, 300));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}
总结

JavaFX菜单栏是JavaFX用户界面中很重要的部分,您可以使用MenuBar、Menu、MenuItem、SeparatorMenuItem、SubMenu等类创建菜单,您还可以为菜单项添加事件处理程序。