Как использовать кнопки мыши «назад» и «вперед» в приложении Swing? - PullRequest
7 голосов
/ 04 октября 2011

Вопрос довольно прост. Я не мог найти много ссылок по этой проблеме, и те, которые я нашел, казалось, не избежали настоящего вопроса. Мое приложение должно обрабатывать события нажатия и отпускания мыши для кнопок мыши назад и вперед. Как я могу справиться с этим?

РЕДАКТИРОВАТЬ: Это использует JDK 1.6 .

Ответы [ 4 ]

8 голосов
/ 04 октября 2011

Проверьте, обнаружены ли дополнительные кнопки мыши, путем вызова:

MouseInfo.getNumberOfButtons();

Проверьте, запускаются ли MouseEvents при нажатии этих дополнительных кнопок.Если да, то что возвращает MouseInfo.getButton()?

Согласно javadocs для MouseInfo.getButton () :

Еслимышь с пятью кнопками, этот метод может возвращать следующие значения:

* 0 (NOBUTTON)
* 1 (BUTTON1)
* 2 (BUTTON2)
* 3 (BUTTON3)
* 4
* 5
3 голосов
/ 04 октября 2011
1 голос
/ 23 октября 2017

Кредит принадлежит исходным респондентам, просто добавив готовый к использованию пример кода для глобального обнаружения кнопок «назад» и «вперед» на случай, если это поможет кому-либо еще (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);
}
0 голосов
/ 04 октября 2011

как мы можем различить кнопки «назад» и «вперед»?Можем ли мы быть уверены, что кнопка 4 вернулась, а 5 вперед?

Я не использую JDK7 и никогда не слышал о кнопках назад / вперед.Однако я знаю, что у класса SwingUtilities есть методы:

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

Если теперь поддерживается обратная / прямая пересылка, то я думаю, они добавили:

isBackMouseButton(MouseEvent)
isForwardMouseButton(MouseEvent) 
...