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

0 java mouse swing right-click mouseevent

我在框架上有一些组件,我需要它才能在右键单击时做出响应.我必须使用自己的活动.我应该延长MouseEvent吗?如何在活动中将右键单击与其他人分开?

Hov*_*els 6

不,你不会扩展 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
   }
}
Run Code Online (Sandbox Code Playgroud)


ton*_*edz 5

MouseEvent班有一个方法,可以让你检查使用了哪个鼠标按钮.它被称为getButton,它返回一个int值,您可以将其与预定义值之一进行比较

最重要的是,有一个方便的类叫做SwingUtilities,它提供了一个很好的抽象层来使用这些字段.这是一个你会发现特别有趣的方法:isRightMouseButton

换句话说,您不需要创建自己的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

    };
Run Code Online (Sandbox Code Playgroud)