如何确定Swing组件是否完全可见,而不是由具有更高z顺序的另一个组件部分剪切

时间:2017-11-29 14:37:54

标签: java swing

考虑以下树

--> rootFrame
  --> panelA
    --> panelA1
  --> panelB
    --> panelB1
    --> panelB2

panelB1可能会在某些时候变得可见,具体取决于外部因素。如果是这种情况,我想在panelA1中知道panelB1(或实际上任何其他面板)是否部分或完全重叠panelA1。

我无法找到办法。在panelA1的绘画中,我可以获取图形对象的剪辑边界,但是当组件重叠时不会调用绘制。

有没有办法A)确定Swing中的组件是否对用户完全可见,B)如果这种情况发生变化会收到通知?

1 个答案:

答案 0 :(得分:0)

我不知道组件是否有任何方法可以知道组件是否已经涂在其上面。

我能想到的唯一想法是使用AWTEventListener。您可以侦听事件以确定是否已显示或移动组件。

因此,每当生成任何这些事件时,您可以检查此组件的边界是否与您担心的组件的边界相交。

查看Global Event Listeners了解详情。