#java #shortcut #menuitem
#java #ярлык #menuitem
Вопрос:
Мне трудно создать ярлык во всплывающем меню TrayIcon.
Ниже приведены мои коды.
final PopupMenu popup = new PopupMenu();
final TrayIcon trayIcon = new TrayIcon(createImage("images/bulb.gif", "tray icon"));
final SystemTray tray = SystemTray.getSystemTray();
//MenuItem aboutItem = new MenuItem("About", new MenuShortcut(KeyEvent.VK_A));
MenuItem aboutItem = new MenuItem("About", new MenuShortcut(KeyEvent.VK_A, false));
Menu settingMenu = new Menu("Settings");
MenuItem exitItem = new MenuItem("Exit");
popup.add(aboutItem);
popup.addSeparator();
popup.add(settingMenu);
popup.addSeparator();
popup.add(exitItem);
aboutItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,
"This dialog box is run from the About menu item");
}
});
Я застрял в этом пункте.
Почему моя программа не работает, когда я нажимаю клавишу «a»?
Как я могу сделать это правильно?
и я хочу указать клавишу сокращения is во всплывающем меню, например, подчеркнуть нижний символ «a».
Комментарии:
1. Не могли бы вы, пожалуйста, правильно отформатировать исходный код?
Ответ №1:
Вот правильный и исправленный код с клавиатурой и keyAccelerator, который поместит строку под
//Check the SystemTray support
if (!SystemTray.isSupported()) {
System.out.println("SystemTray is not supported");
return;
}
final PopupMenu popup = new PopupMenu();
final TrayIcon trayIcon =
new TrayIcon(createImage("images/bulb.gif", "tray icon"));
final SystemTray tray = SystemTray.getSystemTray();
// Create a popup menu components
MenuItem aboutItem = new MenuItem("About");
// Here is the change
aboutItem.setMnemonic(KeyEvent.VK_A);
aboutItem .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
0));
// end change
CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
Menu displayMenu = new Menu("Display");
MenuItem errorItem = new MenuItem("Error");
MenuItem warningItem = new MenuItem("Warning");
MenuItem infoItem = new MenuItem("Info");
MenuItem noneItem = new MenuItem("None");
MenuItem exitItem = new MenuItem("Exit");
//Add components to popup menu
popup.add(aboutItem);
popup.addSeparator();
popup.add(cb1);
popup.add(cb2);
popup.addSeparator();
popup.add(displayMenu);
displayMenu.add(errorItem);
displayMenu.add(warningItem);
displayMenu.add(infoItem);
displayMenu.add(noneItem);
popup.add(exitItem);
trayIcon.setPopupMenu(popup);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("TrayIcon could not be added.");
return;
}
Надеюсь, это поможет..
Комментарии:
1. setMnemonic и setAccelerator не являются методами MenuItem в Java 6.
Ответ №2:
например http://www.javaswing.org/java-swing-popup-menu.aspx
private void showPopup(MouseEvent e) {