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?
问问题
261 次
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 回答