我正在编写一个定期弹出JFrame的Java应用程序(Swing GUI).
有可能以某种方式将窗口置于前面(foo.setAlwaysOnTop(true)会更好)但没有它的焦点?
有些人在打字时不时地将视线从屏幕上移开以查看键盘,我确信如果这个窗口始终能够捕捉到键盘焦点,那么人们会非常生气,因为它会导致它们失去一些每次弹出时都会被忽视.
在其他情况下,即使用户实际上能够打字不看键盘的时候,有一个窗口弹出,并获得焦点可能会导致从弹出窗口本身不需要的操作(有些Tab+ Enter例如组合,其中用户不小心选择了一个她真的不会选择的选项.
提前致谢!
更新
正如乔纳斯建议的那样,foo.setFocusableWindowState(false);如果在窗口渲染后调用(在Gnome上测试),似乎可以工作.
这不起作用:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
Run Code Online (Sandbox Code Playgroud)
但是,这样做:
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
Run Code Online (Sandbox Code Playgroud)
我必须看看是否有一个我可以捕捉/听到的事件,允许我foo.setFocusableWindowStatue(true);在适当的时候做.
我认为我的问题已经解决.