首页 > 其他分享 >如何制作菜单

如何制作菜单

时间:2023-06-01 09:57:37浏览次数:33  
标签:菜单 Menu 如何 window MenuItem new 制作 MenuBar

如何制作菜单

在 JavaFX 中,我们通过 MenuBar, Menu, MenuItem 来制作菜单。

MenuBar 是菜单栏,通常位于窗口顶部。

Menu 是一个菜单项,放在菜单栏上。

MenuItem 是一个菜单条目,位于 Menu 中。

效果展示

image

示例代码

import javafx.application.Application;
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.scene.layout.VBox;
import javafx.stage.Stage;

public class MenuExample extends Application
{
    private Stage window;
    private MenuBar menuBar;

    private void exitProgram()
    {
        this.window.close();
    }

    private void buildMenu()
    {
        menuBar = new MenuBar();

        Menu fileMenu = new Menu("_File");
        menuBar.getMenus().add(fileMenu);

        MenuItem newMenuItem = new MenuItem("_New File");
        fileMenu.getItems().add(newMenuItem);
        MenuItem openMenuItem = new MenuItem("_Open File");
        fileMenu.getItems().add(openMenuItem);
        fileMenu.getItems().add(new SeparatorMenuItem());
        MenuItem exitMenuItem = new MenuItem("_Exit");
        fileMenu.getItems().add(exitMenuItem);
        exitMenuItem.setOnAction( e-> exitProgram() );
    }

    @Override
    public void start(Stage window) throws Exception
    {
        this.window = window;

        VBox vBox = new VBox();

        this.buildMenu();
        vBox.getChildren().add(menuBar);

        Scene scene = new Scene(vBox, 400, 300);

        window.setScene(scene);
        window.setTitle(this.getClass().getSimpleName());
        window.show();
    }

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

代码说明

我们通过 new MenuBar(); 创建了菜单栏,new Menu("_File"); 创建了菜单项,然后用 menuBar.getMenus().add 方法将菜单项添加到菜单栏上。

注意,菜单项的名字前有一个下划线,但此下划线的作用并不是显示出来,而是表示后面的字母是一个快捷键。即如果按住 ALT + F 就可以快速选择菜单。

new MenuItem 用于创建菜单项目,然后可通过 menu.getItems().add 将其添加到一个菜单上。

menuItem.setOnAction 为菜单项目设置一个回调函数,但点击菜单项目时,可触发。

new SeparatorMenuItem() 是一个特殊的菜单,可显示一个分隔符号。

总结

我们可以使用 MenuBar、Menu 和 MenuItem 来创建菜单。步骤如下:

  1. 创建一个 MenuBar 对象作为菜单栏,并将其放置在窗口的顶部
  2. 创建 Menu 对象作为菜单项,并将其添加到菜单栏上
  3. 使用 MenuItem 创建菜单条目,并将其添加到相应的菜单中
  4. 可以使用 SeparatorMenuItem 添加分隔符来组织菜单项
  5. 为 MenuItem 设置事件处理程序,以在用户点击菜单项时执行相应的操作

标签:菜单,Menu,如何,window,MenuItem,new,制作,MenuBar
From: https://www.cnblogs.com/javafx-howto/p/17448068.html

相关文章

  • [GPT4]作为一个大龄程序员,如何提升自己未来的竞争力?
    作为一个大龄程序员,提升自己的竞争力至关重要。以下是一些建议,可以帮助你在职场上保持竞争力和不断壮大技能库:持续学习学习新技术:紧跟技术趋势,如人工智能、大数据、区块链等领域。获得相关证书:如AWS、Azure、GoogleCloud等云服务提供商的认证或者PMP等项目管理认证。观看......
  • 如何使用Next.js创建全栈应用程序
    Next.js乍一看似乎令人生畏,因为有这么多新概念需要掌握。但别担心——在这个循序渐进的教程中,我将为您提供使用Next.js创建您的第一个现代全栈应用程序所需的所有基本信息。在本教程中,我将带您了解Next.js的基础知识,并指导您创建您的第一个全栈应用程序。在本教程结束时,您将......
  • 杠杆和损失外汇交易者如何对待?Forexclub这样做
    在外汇交易中,杠杆和损失是外汇交易者不可逃避的问题,今天Forexclub就和大家聊聊如何对待这个问题很多外汇交易商会提供100倍的500倍的杠杆,甚至无限倍的。这并不意味着外汇交易者就应该使用最大的杠杆。如果外汇交易者像股票市场那样满仓交易,最大的可能就是很快失去所有的本金。继而......
  • 如何使用TableView展示表格数据
    如何使用TableView展示表格数据TableView可以展示一个行列二维表格。表格由表头和记录组成。表头由若干TableColumn组成。通过定义TableView的代码:TableView<Student>studentTableView;可以看出,记录的数据结构就是其模板参数。我们可以把Student的getXxx方法映射......
  • 如何利用ObservableList为TableView添加Add和Del功能
    如何利用ObservableList为TableView添加Add和Del功能TableView的记录可以绑定到一个ObservableList。ObservableList是一种列表数据结构,继承自List。很多JavaFX控件都可以用ObservableList管理动态数据。利用ObservableList可以为TableView提供增加和删除数据的......
  • Revit二次开发系列教程01-如何在Revit中创建模型过程的理解
    目录01案例02步骤讲解03关键类理解04总结05源码地址01案例创建一个结构墙usingAutodesk.Revit.Attributes;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI;usingSystem.Linq;namespaceExampleBasic{[Transaction(TransactionMode.Manual)][Regener......
  • 金融用户敏感数据如何优雅地实现脱敏?
    项目介绍日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。sensitive提供了基于注解的方式,并且内置了常见的脱敏方式,便于开发。日志脱敏为了金融交易的安全性,国家强制规定对于以下信息是要日志脱敏的:用户名手机号邮箱......
  • 如何使用Go中的Weighted实现资源管理
    1.简介本文将介绍Go语言中的Weighted并发原语,包括Weighted的基本使用方法、实现原理、使用注意事项等内容。能够更好地理解和应用Weighted来实现资源的管理,从而提高程序的稳定性。2.问题引入在微服务架构中,我们的服务节点负责接收其他节点的请求,并提供相应的功能和数......
  • 如何使用Go中的Weighted实现资源管理
    1.简介本文将介绍Go语言中的Weighted并发原语,包括Weighted的基本使用方法、实现原理、使用注意事项等内容。能够更好地理解和应用Weighted来实现资源的管理,从而提高程序的稳定性。2.问题引入在微服务架构中,我们的服务节点负责接收其他节点的请求,并提供相应的功能和数......
  • 金融用户敏感数据如何优雅地实现脱敏?
    项目介绍日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。sensitive提供了基于注解的方式,并且内置了常见的脱敏方式,便于开发。日志脱敏为了金融交易的安全性,国家强制规定对于以下信息是要日志脱敏的:用户名手机号邮箱......