2011-12-08 3 views
2

'마우스의 관점'을 의미합니다. 최고의 Z- 주문을 가진 것.
'부모 - 자식'관계의 일부가 될 수없는 JPopupMenu에 붙어 있습니다.java 최상위 구성 요소를 얻는 방법

감사합니다.


테스트에서 나는 JPopupMenu 구성 요소가 화면에 나타난 것을 확인해야합니다. 해당 JPopuMenu의 특정 추가 속성이 없으므로 해당 JPopupMenus를 찾아서 볼 수 있는지 확인하십시오. 내가 볼 수있는 최상위 구성 요소를 모두 가져 와서 그 중 하나가 JPopupMenu 클래스인지 확인하고 싶습니다.

+1

http://sscce.org/ 양식에 코드를 게시하여 요구 사항을 설명하십시오 – mKorbel

+0

주의 : JPopupMenus는 최상위 구성 요소에 반드시 표시되지는 않습니다 - 경량 인 경우 layeredPane에 추가됩니다 소유자의 최상위 부모 루트 팬 – kleopatra

답변

2

나는 또한 질문에 명확하지 해요,하지만 당신은 몇 가지 구성 요소의 가장 높은 부모를 원한다면 당신은 모든 눈에 보이는 윈도우의 목록을 원하는 경우, SwingUtilities.getWindowAncestor(Component);

가 참조 이전에 유래 질문, swing get visible frames

편집은 다음 getComponentZOrder의 @mKorbel 제안을 들여다

을 추가했습니다. 그러나 JPopupMenus는 그들의 친자 관계에 이상 할 수 있습니다.

질문을 다시 읽으면 모든 최상위 Windows를 가져와 getComponentPopupMenu()를 호출하여 일치하는지 확인할 수 있습니다.

x 또는 y 위치가있는 경우 가장 좋은 해결책은 findComponentAt (x, y)를 호출하는 것입니다. javadocs에서 :

"지정된 위치를 포함하는 보이는 하위 구성 요소를 찾습니다. 구성 요소에 겹침이있는 경우 최상위 하위 구성 요소가 반환됩니다. 포함하는 하위 구성 요소가 컨테이너 인 경우이 메서드는 가장 깊게 중첩 된 하위 구성 요소를 계속 검색합니다. 보이지 않는 구성 요소는 검색 중에 무시됩니다. "

+0

SwingUtilities.getWindowAncestor (Component)와 반대가 필요합니다. '시야 관점'에서 나는 가장 높은 z 주문 –

+0

+1, @Mykhaylo Adamovych 다시 SSCCEE를 게시해야하기 때문에 모든 shoud 또는 should'd 올바른 및 올바른 방법, 왜 우리는 당신을 위해 좋은 광고를 제공하는 올바른 suggetion을 요청해야 할 필요가 아이가 필요해 ... ... – mKorbel

1

JPopupMenu가 JFrame의 하위로 간주되는지 확실하지 않습니다.

그렇다면 Darryl의 Swing Utils 클래스를 사용하여 찾을 수 있어야합니다.

관련 문제