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