JavaFX菜单ContextMenu使用

来源:互联网 发布:大型网络3d手游 编辑:程序博客网 时间:2024/06/16 07:49

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

通过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截图:


原创粉丝点击