У меня есть приложение Swing, которое состоит из одного JFrame, установленного на Always On Top.
При работе в Windows я использую следующий код для открытия собственного почтового клиента и браузера по умолчанию соответственно:
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + Utils.formatMailtoUrl(to, subject, body));
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
Поскольку JFrame установлен на Always On Top, в то время как типичный браузер или почтовый клиент по умолчанию (IE и Outlook для нашего клиента) не открываются как Always On Top, первый препятствует последнему.
Наше текущее «решение» заключается в минимизации JFrame при одновременном открытии собственных окон.Но это оказывается проблемой соответствия 508, и нас просят:
- Не минимизировать JFrame.
- Вернуть фокус в JFrame после браузера или почтового клиентазакрыты
Стратегия, которую я имею в виду, состоит в том, чтобы "отключить" состояние Always On Top JFrame и иметь какой-то обратный вызов или прослушиватель событий, который уведомит JFrame о том, что окна электронной почты или браузерабыли закрыты, а затем переключите JFrame обратно в состояние Always On Top и установите фокус.
Поскольку это приложение Java, я боюсь, что это почти невозможно, потому что мы говорим о нативном взаимодействии.Является ли моя стратегия выполнимой, есть ли лучшая выполнимая стратегия, и, самое главное, как это можно сделать?!
Заранее спасибо!