首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EventHandler转化为EventHandler

将EventHandler转化为EventHandler
EN

Stack Overflow用户
提问于 2014-03-20 10:20:41
回答 1查看 310关注 0票数 0

我想把ContextMenu叫进EventHandler。THis代码成功运行,但我面临一个问题。

代码语言:javascript
复制
bp.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>()
        {
            @Override
            public void handle(ContextMenuEvent event)
            {

                ContextMenu contextMenu = new ContextMenu();
                MenuItem item1 = new MenuItem("About");
                item1.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {
                        System.out.println("About");
                    }
                });
                MenuItem item2 = new MenuItem("Preferences");
                item2.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {
                        System.out.println("Preferences");
                    }
                });
                MenuItem item3 = new MenuItem("Close");
                item3.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {

                    }
                });
                contextMenu.getItems().addAll(item1, item2, item3);

                bp.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>()
                {
                    @Override
                    public void handle(ContextMenuEvent event)
                    {
                        contextMenu.show(bp, event.getScreenX(), event.getScreenY());
                        event.consume();
                    }
                });

                bp.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>()
                {
                    @Override
                    public void handle(MouseEvent event)
                    {
                        contextMenu.hide();
                    }
                });
                event.consume();
            }
        });

使用此事件处理程序加载Tab内容时,必须第一次单击两次才能调用上下文菜单。我想,如果这是EventHandler if的原因。如何编辑代码以便用一个EventHandler调用上下文菜单?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-20 10:48:49

尝尝这个

代码语言:javascript
复制
bp.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>()
        {
            @Override
            public void handle(ContextMenuEvent event)
            {

                ContextMenu contextMenu = new ContextMenu();
                MenuItem item1 = new MenuItem("About");
                item1.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {
                        System.out.println("About");
                    }
                });
                MenuItem item2 = new MenuItem("Preferences");
                item2.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {
                        System.out.println("Preferences");
                    }
                });
                MenuItem item3 = new MenuItem("Close");
                item3.setOnAction(new EventHandler<ActionEvent>()
                {
                    @Override
                    public void handle(ActionEvent e)
                    {

                    }
                });
                contextMenu.getItems().addAll(item1, item2, item3);

                contextMenu.show(bp, event.getScreenX(), event.getScreenY());

                bp.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>()
                {
                    @Override
                    public void handle(MouseEvent event)
                    {
                        contextMenu.hide();
                    }
                });
                event.consume();
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22529865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档