如何在Swing应用程序中使用后退和前进鼠标按钮?

时间:2011-10-04 08:02:48

标签: java swing mouse mouseevent

问题很简单。我找不到关于这个问题的很多链接,我找到的那些似乎并没有避免真正的问题。我的应用程序必须处理后退和前进鼠标按钮的鼠标按下/释放事件。我怎么处理这个?

编辑:这是使用 JDK 1.6

4 个答案:

答案 0 :(得分:8)

通过调用以下方法检查是否检测到其他鼠标按钮:

MouseInfo.getNumberOfButtons();

单击其他按钮时,检查是否触发了MouseEvents。如果是这样,MouseInfo.getButton()会返回什么?

根据MouseInfo.getButton()的javadoc:

  

如果安装了带有五个按钮的鼠标,则此方法可能会返回   以下值:

* 0 (NOBUTTON)
* 1 (BUTTON1)
* 2 (BUTTON2)
* 3 (BUTTON3)
* 4
* 5

答案 1 :(得分:3)

答案 2 :(得分:1)

Credit属于原始响应者,只需添加一个即用型代码示例进行全局后退/前进按钮检测,以防其他人(JDK 1.8)

if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() && MouseInfo.getNumberOfButtons() > 3) {
    Toolkit.getDefaultToolkit().addAWTEventListener(event -> {
        if (event instanceof MouseEvent) {
            MouseEvent mouseEvent = (MouseEvent) event;
            if (mouseEvent.getID() == MouseEvent.MOUSE_RELEASED && mouseEvent.getButton() > 3) {
                if (mouseEvent.getButton() == 4) {
                    // back
                } else if (mouseEvent.getButton() == 5) {
                    // forward
                }
            }
        }
    }, AWTEvent.MOUSE_EVENT_MASK);
}

答案 3 :(得分:0)

  

我们如何区分“后退”和“前进”按钮?我们能确定按钮4回来了,5是向前吗?

我不使用JDK7,也从未听说过后退/前进按钮。但是我知道SwingUtilities类有方法:

isRightMouseButton(MouseEvent)
isLeftMouseButton(MouseEvent) 
isMiddleMouseButton(MouseEvent) 

如果现在支持后退/前进,那么我猜他们已添加:

isBackMouseButton(MouseEvent)
isForwardMouseButton(MouseEvent)