【发布时间】:2013-08-23 22:07:46
【问题描述】:
下面的代码是一个可测试的类,当在键盘上按下 control+A 时应该打印出一些文本,并且还会在系统托盘中显示一个图像。这完全取决于您的操作系统所支持的系统托盘。
我的问题是当我按下 control+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();
}
}
}
}
【问题讨论】:
-
"What am I doing wrong?"-- 首先,不发布sscce。请发布我们可以测试、修改和运行的代码。 -
已更新为 SSCCE。
-
见鬼,你为什么要两次问同一个问题?我们在您之前的问题中告诉过您,Java 不会以这种方式工作,KeyListeners 不适用于没有焦点的应用程序,而且答案仍然是一样的!
标签: java keyevent system-tray trayicon tray