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

时间:2012-11-02 23:40:41

标签: java swing mouse mouseevent right-click

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

2 个答案:

答案 0 :(得分: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
   }
}

答案 1 :(得分:5)

MouseEvent类有一个方法可以让你检查使用了哪个鼠标按钮。它被称为getButton并返回int值,您可以将其与predefined values之一进行比较

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

换句话说,您不需要创建自己的MouseEventMouseListener实现就足够了。以下是内联实现的示例,不包含相关详细信息。

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

    };