JavaFX菜单ContextMenu使用

时间:2021-11-19 17:01:23

在开发应用的过程中。想做一个类似下面截图的功能,点击菜单按钮之后,在下面显示下拉面板(该截图是华为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使用