Подскажите пожалуйста, как добавить иконки к пунктам меню, которые расположены в системном трее (в данном случае к пункту "Профиль"). В официальном туториале не нашёл, setImage есть у JMenuItem, у MenuItem его нет. Если же PopupMenu поменять на JPopupMenu то он не принимается trayIcon.setPopupMenu.
//Проверяем есть ли поддержка трея
if (!SystemTray.isSupported()) {
System.out.println("SystemTray is not supported");
return;
}
final PopupMenu popup = new PopupMenu();
final TrayIcon trayIcon = new TrayIcon(createImage("/images/application_icon.png", "tray icon"));
final SystemTray tray = SystemTray.getSystemTray();
//Разрешаем автоподгонку иконки
trayIcon.setImageAutoSize(true);
// Создаём пункты меню
MenuItem profileMenuItem = new MenuItem("Профиль");
profileMenuItem.addActionListener((java.awt.event.ActionEvent e)
-> {
});
popup.add(profileMenuItem);//Добавляем пункты меню
popup.addSeparator();//Разделитель
trayIcon.setPopupMenu(popup);
Меню, на основе этого проекта: tray-icon-skeleton
Добавление иконки с автоподгонкой на основе ответов в этом посте: Force JMenuItem size
//Проверяем есть ли поддержка трея
if (!SystemTray.isSupported()) {
System.out.println("Системный трей не поддерживается, пожалуйста используйте другую операционную систему");
return;
}
final SystemTray tray = SystemTray.getSystemTray();
final TrayIcon trayIcon = new TrayIcon(createImage("/images/application_icon.png", ""), "tray icon");
trayIcon.setImageAutoSize(true);//Разрешаем автоподгонку иконки
JPopupMenu.setDefaultLightWeightPopupEnabled(true);
final JPopupMenu popupMenu = new JPopupMenu();
Icon icon = UIManager.getIcon("RadioButtonMenuItem.checkIcon");
Image originalImage = createImage("/images/application_icon.png", "");
originalImage=originalImage.getScaledInstance(icon.getIconWidth(), icon.getIconWidth(), 0);
ImageIcon image = new ImageIcon(originalImage);
JMenuItem jMenuItem = new JMenuItem("Профиль", image);
popupMenu.add(jMenuItem);
jMenuItem.addActionListener((e) -> {
});
//Hidden dialog displayed behing the system tray to auto hide the popup menu when clicking somewhere else on the screen
final JDialog hiddenDialog = new JDialog();
hiddenDialog.setSize(10, 10);
//Listener based on the focus to auto hide the hidden dialog and the popup menu when the hidden dialog box lost focus
hiddenDialog.addWindowFocusListener(new WindowFocusListener() {
public void windowLostFocus(final WindowEvent e) {
hiddenDialog.setVisible(false);
}
public void windowGainedFocus(final WindowEvent e) {
//Nothing to do
}
});
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseReleased(final MouseEvent e) {
if (e.isPopupTrigger()) {
//Display the menu at the position of the mouse
//The dialog is also displayed at this position but it is behind the system tray
popupMenu.setLocation(e.getX(), e.getY());
hiddenDialog.setLocation(e.getX(), e.getY());
//Important: set the hidden dialog as the invoker to hide the menu with this dialog lost focus
popupMenu.setInvoker(hiddenDialog);
hiddenDialog.setVisible(true);
popupMenu.setVisible(true);
}
}
});
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("TrayIcon could not be added.");
return;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Какой язык быстрее java или scala, допустим есть две программы написанные по тому же алгоритму только одна написана на Java а другая на scala, какая...
Пытаюсь реализовать шифр "Кузнечика" на JavaНо встала проблема