是否可以知道JFrame是否完全可见?

时间:2010-02-26 15:51:21

标签: java windows size jframe

我只是在试验JFrames,并且想知道我的应用程序窗口是否完全可见或被其他应用程序窗口遮挡。其他应用程序窗口可以是本机应用程序。如果可以,我可以检索不可见区域的大小和位置吗?

2 个答案:

答案 0 :(得分:1)

这是非常讨厌的方法,这是我能想到的唯一方法(并且不推荐):

  • JFrame的玻璃窗格设置为完全红色并显示玻璃窗格(暂时)。
  • 使用Robot类从JFrame当前所在的屏幕坐标中对所有像素(或多个像素)进行采样。
  • 如果您的所有样本(或根据某个阈值的大多数样本)都是红色,那么JFrame前面可能没有任何内容。
  • 最后,再次隐藏玻璃窗格。

替代方案(更好的解决方案)

只需致电toFront()上的JFrame,将其置于最前方并确保其具有焦点。

答案 1 :(得分:0)

不可能,因为您的Java应用程序只知道其窗口内容,而不知道其他内容。窗口装饰和屏幕的其余部分由操作系统管理。在像Linux这样的Unix操作系统中,窗口管理器甚至是一个完全不同的用户空间进程。另一个本机应用程序也将在另一个用户空间进程中运行。

我可以问你为什么要这样吗?如果您询问刷新/重绘问题,那么您无需做任何事情。您的操作系统有望足够智能,并且当它再次可见时,它会要求您的应用程序重新绘制。