Как поймать окно минимизации события?
Я хочу создать экземпляр JFrame
и по щелчку его minimize button
, я хотел бы скрыть его в System Tray
, который обычно является taskbar
windows.
Я пришел к выводу, что с помощью класса SystemTray
в пакете java.awt
я могу это сделать, но ни один учебник по нему, ни один пример рабочей программы я не получаю.
Я задал этот вопрос здесь, чтобы либо получить ссылку на сайт-учебник для класса SystemTray
, либо, если какой-либо орган знает, как поймать событие минимизации окна, рабочий пример.
5 ответов:
Это будет ловушка окно свернутое событие и создаст значок в трее. Он также удалит окно из панели задач и добавит прослушиватель на иконку в трее, так что щелчок мыши восстановит окно. Код немного отрывочен, но должен быть достаточно хорош для ваших целей обучения:
public class Qwe extends JFrame { public static void main(String[] args) { final Qwe qwe = new Qwe(); qwe.addWindowStateListener(new WindowStateListener() { public void windowStateChanged(WindowEvent e) { if (e.getNewState() == ICONIFIED) { try { final TrayIcon trayIcon = new TrayIcon(new ImageIcon("/usr/share/icons/gnome/16x16/emotes/face-plain.png").getImage()); trayIcon.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { qwe.setVisible(true); SystemTray.getSystemTray().remove(trayIcon); } }); SystemTray.getSystemTray().add(trayIcon); qwe.setVisible(false); } catch (AWTException e1) { e1.printStackTrace(); } } } }); qwe.setSize(200, 200); qwe.setVisible(true); } }
Интерфейс
WindowListener
и методJFrame
addWindowListener()
должны помочь вам определить, когда фрейм был минимизирован.
Лучшим способом было бы создать следующее
1) SystemTray
2) Добавьте
JPopopMenu
кSystemTray's Icon
3) set
DefaultCloseOperation
for TopLevelContainer (в вашем случае JFrame )
С помощью WindowListener
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
В других случаях всегда срабатывает
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
Обратите внимание, не забудьте объявить
System.exit(1)
вSystemTray's JpopupMenu
, изJMenuItem
или другогоAction/Event
, потому что в этом виде currenet JVM никогда не уходил из родной ОС пока компьютер не выключится или не перезагрузится