Как повторно открыть один экземпляр приложения java launch4j

Резюме: снова сделайте невидимое приложение видимым, щелкнув значок на рабочем столе.

Я создал настольное приложение Java и использовал Launch4j для создания исполняемого файла. Мое приложение должно работать как один экземпляр. Я добился этого, проверив эту опцию в графическом интерфейсе конфигурации Launch4j. Когда пользователь нажимает кнопку x в моем окне (я использую JFrame), окно становится невидимым. НЕ утилизируется. Когда пользователь дважды щелкает значок на панели задач, окно приложения снова становится видимым. Когда пользователь дважды щелкает значок приложения на рабочем столе, а приложение уже запущено, мне нужно, чтобы мое главное окно снова стало видимым, как поведение со значком на панели задач.

Launch4j предоставляет возможность для заголовка окна на вкладке «Один экземпляр». Я думаю, что этот вариант может быть предназначен для того, что мне нужно. Однако, когда я устанавливаю заголовок окна и выполняю шаги, описанные выше, я получаю пустое белое окно. Когда отображается пустое белое окно, двойной щелчок по значку на панели задач приведет к тому, что мое приложение появится в белом окне. Такое поведение предполагает, что, возможно, изменение моего кода, относящегося к контейнеру верхнего уровня (Window, Frame, JFrame), может иметь эффект.

Есть ли у вас какие-либо идеи о том, как реализовать это поведение при использовании Launch4j? (это удобно).

редактировать:

Суть моего вопроса в том, как определить, что происходит, когда пользователь дважды щелкает мой исполняемый значок на рабочем столе? Если бы я мог проверить существующий экземпляр и перенаправить двойной щелчок на соответствующий значок на панели задач, это было бы фантастически.


person Justin Wiseman    schedule 28.09.2012    source источник


Ответы (1)


Я смог добиться своей цели. На вкладке «Один экземпляр» я указал заголовок своего основного JFrame в поле «Заголовок окна». Затем я добавил WindowFocusListener в свой основной JFrame. Когда мой JFrame получает фокус, я проверяю, не виден ли он уже. Если это не так, я вызываю соответствующий метод для отображения моего JFrame.

Ключевым наблюдением является то, что двойной щелчок по значку exe, сгенерированному Launch4j, запускает событие фокуса окна, когда в настройке указан заголовок окна. Я не уверен, что это единственное событие, которое запускается, но, прослушивая это событие, я могу выполнять любые необходимые действия из моего кода Java, когда пользователь дважды щелкает значок на рабочем столе.

person Justin Wiseman    schedule 01.10.2012