Различают кнопки мыши при нажатии на java.awt.MenuItem - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу различать щелчки левой и правой мыши на java.awt.MenuItem.В настоящее время оба события запускают один и тот же ActionListener, и я не могу выяснить, какая кнопка мыши была нажата.

Бонусные баллы для любого решения, которое также распознает KeyEvents, когда MenuItemвыбранный (мышь зависла, не щелкнул); -)

Фон

Я создал TrayIcon и добавил PopupMenu.Я не использую элементы пользовательского интерфейса Swing, так как не нашел способа скрыть всплывающее меню при щелчке вне меню (например, на рабочем столе).Вот почему я придерживаюсь компонентов AWT.

Пример кода

public void createSystemTrayMenu() {
    // Create System Tray Icon
    SystemTray systemTray = SystemTray.getSystemTray();
    TrayIcon trayIcon = new TrayIcon(
            Toolkit.getDefaultToolkit().getImage(Constants.TRAY_ICON_FILENAME),
            Constants.TRAY_ICON_TEXT);
    PopupMenu testMenu = new PopupMenu();

    MenuItem testItem = new MenuItem("Test", new MenuShortcut(KeyEvent.VK_SPACE));
    testItem.addActionListener(new ActionListener() {@Override
        public void actionPerformed(ActionEvent e) {
            // Here I want to know which mouse button has been pressed to get here
            doSomething();
        }
    });

    testMenu.add(testItem);
    trayIcon.setPopupMenu(testMenu);

    try {
        systemTray.add(trayIcon);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}
...