2011-12-08 44 views
2

我的意思是在'鼠標的角度'。 Z值最高的東西。
卡住了JPopupMenu,甚至不能成爲「親子關係」的一部分。java如何獲得頂級組件

謝謝。


在測試中,我需要驗證一個JPopupMenu組件出現在屏幕上。我沒有該JPopuMenu的任何特定附加屬性來查找該謂詞的所有JPopupMenus,並檢查它們中的任何一個是否可見。我想獲得所有可見的頂級組件,並驗證其中一個是JPopupMenu類。

+1

請在這裏發佈http://sscce.org/表單中的代碼,說明您的requirent(s) – mKorbel

+0

要注意:JPopupMenus不一定顯示在頂層組件中 - 如果它們是輕量級的,它們會添加到layeredPane所有者的頂級父級rootpane – kleopatra

回答

2

我也對這個問題不太清楚,但如果你想要一些組件的最高父,有SwingUtilities.getWindowAncestor(Component);

如果你希望所有可見窗口的列表,請參閱先前的問題#1,swing get visible frames

編輯ADDED

然後看看getComponentZOrder的@mKorbel建議。但是JPopupMenus對他們的親子來說可能很奇怪。

重新讀取您的問題,您可能想要獲取所有頂級Windows並調用getComponentPopupMenu()來檢查匹配項。或者,如果你有一個x,y位置,最好的解決方案是調用findComponentAt(x,y)。從javadocs:

「定位包含指定位置的可見子組件。如果組件中存在重疊,則返回最頂層子組件。如果包含的子組件是Container,則此方法將繼續搜索最深的嵌套子組件,在搜索期間忽略不可見的組件。「

+0

我需要與SwingUtilities.getWindowAncestor(Component)相反;在'知名度的角度'。我需要最高Z級的孩子 –

+0

+1,@Mykhaylo Adamovych再次發佈SSCCEE,因爲所有事情都應該是正確的或正確的方式,爲什麼我們需要問你爲你提供正確的建議...... ... – mKorbel

1

不確定是否將JPopupMenu視爲JFrame的子項。

但是,如果是這樣,那麼你應該可以使用Darryl的Swing Utils類來找到它們。

相關問題