是否有可能将JFrame放在前面但不聚焦?
我正在编写一个Java应用程序(Swing GUI),它会定期弹出一个JFrame。
是否有可能以某种方式将窗口放在前面(foo.setAlwaysOnTop(true)会更好),但没有焦点?
有些人不时将眼睛从屏幕上移开,在打字时看着键盘,我敢肯定,如果这个窗口总是能捕捉到键盘焦点,人们会非常生气,因为它导致他们每次弹出时都会丢失相当多的击键。
在其他情况下,即使用户实际上能够在不一直看键盘的情况下打字,弹出一个窗口并获得焦点也可能导致弹出窗口本身的不需要的操作(例如,用户意外地选择了一个她实际上不会选择的选项)。Tab
Enter
提前致谢!
更新
正如Jonas所建议的那样,如果在窗口渲染后调用(仅在Gnome上测试),似乎可以工作。foo.setFocusableWindowState(false);
这不起作用:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
但是,这确实:
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
我必须看看是否有一个事件我可以捕捉/收听,允许我在适当的时候做。foo.setFocusableWindowStatue(true);
我认为我的问题解决了。