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

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

编辑:这是使用JDK 1.6

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

MouseInfo.getNumberOfButtons();

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

根据MouseInfo.getButton()的javadocs:

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

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

看看MouseEvent.getButton()和Toolkit.areExtraMouseButtonsEnabled() 。

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

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

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

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

 isBackMouseButton(MouseEvent) isForwardMouseButton(MouseEvent) 

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); }