问题很简单。我找不到关于这个问题的很多链接,我找到的那些似乎并没有避免真正的问题。我的应用程序必须处理后退和前进鼠标按钮的鼠标按下/释放事件。我怎么处理这个?
编辑:这是使用 JDK 1.6 。
答案 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)