Код ниже - тестируемый класс, который должен печатать какой-либо текст, когда элемент управления + A был нажат на клавиатуре, а также отображает изображение на панели задач. Все это зависит от системного лотка, поддерживаемого вашей операционной системой.MenuShortcut KeyEvent не работает
Моя проблема заключается в том, что текст не распечатывается, когда я нажимаю кнопку управления + A, он печатается только при нажатии элемента на панели задач.
/**
*
* @author Tyluur
* @since Aug 23, 2013
*/
public class Testable {
public static void main(String... args) {
registerTrayItems();
}
private static void registerTrayItems() {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
TrayIcon icon = null;
MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_A);
MenuItem menuItem = new MenuItem("Toggle", shortcut);
menuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.err.println("The action has been called!");
}
});
PopupMenu popup = new PopupMenu();
popup.add(menuItem);
try {
icon = new TrayIcon(new ImageIcon(new URL("http://i.imgur.com/xQoz2TN.png")).getImage(), "Typer", popup);
tray.add(icon);
} catch (MalformedURLException | AWTException e) {
e.printStackTrace();
}
}
}
}
'' Что я делаю неправильно? "' - для одного, а не для публикации [sscce] (http://sscce.org). Пожалуйста, отправьте код, который мы можем проверить, изменить и запустить. –
Он был обновлен с помощью SSCCE. – Tyluur
Черт, почему ты задаешь один и тот же вопрос дважды? Мы сказали вам в вашем предыдущем вопросе, что Java не будет работать таким образом, что KeyListeners не работают для приложений, которые не имеют фокуса, и ответ, как ни удивительно, все тот же! –