我在框架上有一些组件,我需要它才能在右键单击时做出响应。我必须使用自己的活动。我应该延长MouseEvent
吗?如何在我的活动中将右键单击与其他人分开?
答案 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
换句话说,您不需要创建自己的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
};