我有一个 Swing 应用程序,它由一个设置为 Always On Top 的 JFrame 组成。
在 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
我想到的策略是“关闭” JFrame 的 Always On Top 状态,并有某种回调或事件侦听器,它将通知 JFrame 电子邮件或浏览器窗口已关闭,然后将 JFrame 切换回Always On Top 状态并设置焦点。
因为这是一个 Java 应用程序,我担心这几乎是不可能的,因为我们正在谈论本机互操作。我的策略是否可行,是否有更好的可行策略,最重要的是,如何做到?!
提前致谢!