java - 是否可以将 JFrame 放在前面而不是焦点?

标签 java swing jframe

我正在编写一个定期弹出 JFrame 的 Java 应用程序 (Swing GUI)。

是否有可能以某种方式将窗口置于最前面(foo.setAlwaysOnTop(true) 会更好)但没有使其成为焦点?

有些人在打字时不时将眼睛从屏幕上移开看键盘,我敢肯定,如果这个窗口始终捕获键盘焦点,人们会非常恼火,因为这会导致他们迷失方向每次它弹出时都被忽视了很多次击键。

在其他情况下,即使用户实际上能够在不一直看键盘的情况下打字,弹出窗口并获得焦点可能会导致弹出窗口本身执行不需要的操作(某些 Tab +Enter 组合,例如,用户不小心选择了一个她本来不会选择的选项)。

提前致谢!

更新

正如 Jonas 所建议的,foo.setFocusableWindowState(false); 如果在窗口渲染后调用(仅在 Gnome 上测试过),似乎可以工作。

这不起作用:

foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);

但是,这确实:

foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);

我必须看看是否有一个我可以捕获/收听的事件允许我在适当的时候执行 foo.setFocusableWindowStatue(true);

我认为我的问题已经解决了。

最佳答案

这可能有效:

foo.setFocusableWindowState(false);

关于java - 是否可以将 JFrame 放在前面而不是焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788953/

相关文章:

Java JFrame : Image not displayed

java - 将 JList 值从 JFrame 传递到 JDialog

java - 如何修复此 ActionListener 以将字符串传回小部件

java - 如何在 Android 中播放从 Assets 文件夹加载的 WAV 文件?

java - 如何用边框包围 Java Swing 组件?

java - 为什么我的 JPanel 背景颜色不会改变?

java - 如何使用 java 阻止用户访问目录?

Java简化语法

java - 添加到ArrayList后刷新JTable

java - JTabbedPane 组件何时获得其大小?