Java jframe是否在另一个程序前面可见?
我有一个java swing程序,它由许多jframes组成,我不知道最好的设计,但它完成了这项工作 如果我打开另一个程序,例如firefox,并最大化该窗口,我的jframes将不可见 现在,当我单击其中一个jframe窗口任务栏上的按钮时,jframe弹出窗口 当这个jframe弹出时,我需要检查我的其他jframe是否可见,我的意思是它们在firefox窗口的前面 我尝试了isVisible()、isShowing()和isDisplayable(),但即使jframe位于firefox窗口下方,它们也总是返回true。这在阅读javadoc时是有意义的 但是我似乎找不到一个方法来告诉我我的jframe是否真的在firefox窗口前可见 这让我困惑 [编辑] firefox覆盖的jframe具有以下属性:Java jframe是否在另一个程序前面可见?,java,swing,jframe,Java,Swing,Jframe,我有一个java swing程序,它由许多jframes组成,我不知道最好的设计,但它完成了这项工作 如果我打开另一个程序,例如firefox,并最大化该窗口,我的jframes将不可见 现在,当我单击其中一个jframe窗口任务栏上的按钮时,jframe弹出窗口 当这个jframe弹出时,我需要检查我的其他jframe是否可见,我的意思是它们在firefox窗口的前面 我尝试了isVisible()、isShowing()和isDisplayable(),但即使jframe位于firefox窗
14:50:08,129 DEBUG DrawFrame - isVisible: true
14:50:08,129 DEBUG DrawFrame - isDisplayable: true
14:50:08,129 DEBUG DrawFrame - isShowing: true
[编辑二]
只是为了说明我的目标:我有多个jframe,当我单击窗口任务栏上的一个特定jframe按钮时,我想检查用户是否可以看到另一个jframe。如果它对用户不可见(例如,当被另一个程序覆盖时),则我希望使其可见。使其可见很简单:WindowListener windowActivated并在不可见的帧上调用toFront,但是当另一个jframe再次激活时(调用windowActivated>toFront>windowActivated>toFront,等等:-),这就是为什么我需要在调用toFront方法之前检查可见性
[编辑部3]
java中似乎没有检查用户是否可以看到窗口的功能,因此使用本机是唯一的解决方案,关于stackoverflow的一个主题给了我答案:
干杯 - 从中使用
/windowGainedFocus
LostFocus
Window[]wins=Window.getWindows()数组中的循环代码>,返回当前JVM中的所有
- 确保通过测试
(或if(wins[i]instanceof JFrame){
/JDialog
)在循环中JWindow