Я хочу различать щелчки левой и правой мыши на 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();
}
}