小编Joh*_*son的帖子

是否有可能将JFrame带到前面而不是焦点?

我正在编写一个定期弹出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);在适当的时候做.

我认为我的问题已经解决.

java swing focus jframe always-on-top

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

always-on-top ×1

focus ×1

java ×1

jframe ×1

swing ×1