欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaFX菜单ContextMenu使用

程序员文章站 2024-02-06 22:59:46
...

在开发应用的过程中。想做一个类似下面截图的功能,点击菜单按钮之后,在下面显示下拉面板(该截图是华为Hisuite客户端)。

JavaFX菜单ContextMenu使用

通过ContextMenu可以实现该功能,首先定义GlobalMenu,继承ContextMenu,显示这些功能选项

package com.nii.desktop.widget.menu;

import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;

/**
 * Created by wzj on 2017/8/22.
 */
public class GlobalMenu extends ContextMenu
{
    /**
     * 单例
     */
    private static GlobalMenu INSTANCE = null;

    /**
     * 私有构造函数
     */
    private GlobalMenu()
    {
        MenuItem settingMenuItem = new MenuItem("设置");
        MenuItem updateMenuItem = new MenuItem("检查更新");
        MenuItem feedbackMenuItem = new MenuItem("官方论坛");
        MenuItem aboutMenuItem = new MenuItem("问题与建议");
        MenuItem companyMenuItem = new MenuItem("关于");


        getItems().add(settingMenuItem);
        getItems().add(updateMenuItem);
        getItems().add(companyMenuItem);
        getItems().add(feedbackMenuItem);
        getItems().add(aboutMenuItem);
    }

    /**
     * 获取实例
     * @return GlobalMenu
     */
    public static GlobalMenu getInstance()
    {
        if (INSTANCE == null)
        {
            INSTANCE = new GlobalMenu();
        }

        return INSTANCE;
    }
}

假设该菜单按钮是menuButton,设置按钮点击事件,点击之后,把该GloriaMenu显示在按钮的下面就可以了。

/**
     * 菜单点击事件
     */
    public void menuButtonClickAction()
    {
        menuButton.setOnMouseClicked(new EventHandler<MouseEvent>()
        {
            @Override
            public void handle(MouseEvent event)
            {
                GlobalMenu.getInstance().show(menuButton, Side.BOTTOM,0,0);
            }
        });
    }

下面是我写的demo截图:

JavaFX菜单ContextMenu使用

相关标签: javafx ContextMenu