【问题标题】:EventHandler into EventHandler事件处理程序变成事件处理程序
【发布时间】:2014-03-20 10:20:41
【问题描述】:

我想将 ContextMenu 调用到 EventHandler 中。此代码成功运行,但我遇到了一个问题。

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();
            }
        });

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

【问题讨论】:

    标签: javafx javafx-2 javafx-8


    【解决方案1】:

    试试这个

    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();
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2011-05-17
      • 2011-09-19
      相关资源
      最近更新 更多