0

I have some component on the frame and I need it to respond just on right button click. I have to use my own event. Should I extend MouseEvent? How can I separate right button click from others in my event?

4

2 回答 2

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
   }
}
于 2012-11-02T23:53:46.640 回答
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

    };
于 2012-11-02T23:53:56.593 回答