Java 为右键单击创建我自己的事件

Java 为右键单击创建我自己的事件,java,swing,mouse,mouseevent,right-click,Java,Swing,Mouse,Mouseevent,Right Click,我在框架上有一些组件,我需要它在右键点击时响应。我必须使用我自己的事件。我应该延长MouseEvent吗?在我的活动中,如何将右键单击与其他按钮单击区分开来?不,您不会扩展MouseEvent,而是使用MouseEvent 如果这是一个Swing GUI,您可以将MouseListener添加到组件中,然后在MouseListener的mousePressed方法中,获取传入该方法的MouseEvent对象,获取其modifiersEx,然后检查是否按下了右键单击: public void mo

我在框架上有一些组件,我需要它在右键点击时响应。我必须使用我自己的事件。我应该延长MouseEvent吗?在我的活动中,如何将右键单击与其他按钮单击区分开来?

不,您不会扩展MouseEvent,而是使用MouseEvent

如果这是一个Swing GUI,您可以将MouseListener添加到组件中,然后在MouseListener的mousePressed方法中,获取传入该方法的MouseEvent对象,获取其modifiersEx,然后检查是否按下了右键单击:

public void mousePressed(MouseEvent mEvt) {
   if ((mEvt.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
      // right button has been pressed
   }
}
MouseeEvent类有一个方法,允许您检查使用了哪个鼠标按钮。它被调用并返回一个int值,您可以将其与

除此之外,还有一个名为SwingUtilities的方便类,它为这些字段的使用提供了一个很好的抽象层。下面是一个你会发现特别有趣的方法:

换句话说,您不需要创建自己的MouseEvent,MouseListener实现就足够了。这里是一个内联实现的示例,排除了不相关的细节

new MouseListener(){

        @Override
        public void mouseClicked(MouseEvent e) {
            if(SwingUtilities.isRightMouseButton(e)){
                //do what you want on right click
            }
        }
        // other methods required by the interface

    };

是的,谢谢。我知道解决问题的方法,我同意不需要创建自定义事件,但任务不是使用Java的MouseEvent,任务是创建自定义事件。我已经尝试创建任务所需的自己的类。但我完全被误导了。首先,我试图创建一个扩展EventObject的类,但我不知道如何使它成为右键单击事件。比我想扩展MouseEvent,但我仍然想不出如何以正确的方式来做。我提醒您,我必须创建自己的事件类,而不仅仅是使用java.awt.event.MouseEvent。