我正在编写一个 Java 应用程序(Swing GUI),它会定期弹出 JFrame。
是否有可能以某种方式将窗口置于前面(foo.setAlwaysOnTop(true)会更好)但是without有焦点吗?
有些人在打字时时不时地将眼睛从屏幕上移开,看键盘,我确信如果这个窗口总是捕获键盘焦点,人们会非常恼火,因为这会导致他们失去相当多的焦点每次在不被注意的情况下弹出键盘时。
在其他情况下,即使用户实际上能够在不一直看键盘的情况下进行打字,弹出窗口并获得焦点也可能会导致弹出窗口本身执行不需要的操作(某些Tab
+Enter
例如,用户意外选择了一个她本来不会选择的选项)。
提前致谢!
Update
正如乔纳斯建议的那样,foo.setFocusableWindowState(false);
如果在窗口渲染后调用似乎可以工作(仅在 Gnome 上测试)。
这不起作用:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
然而,这does:
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
我必须看看是否有一个我可以捕捉/收听的事件可以让我做foo.setFocusableWindowStatue(true);
在适当的时候。
我认为我的问题已经解决了。
这可能有效:
foo.setFocusableWindowState(false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)