2016-11-24 12 views
0

JPanel을 구축 중이며 JInternalFrame에 제공됩니다. 이제 누군가가 JInternalFrame의 X 버튼을 클릭하면 숨겨지기를 원합니다. 문제는 JPanel에서이 함수를 구현해야하며 JInternalFrame에 대한 액세스 권한이 없다는 것입니다.JPanel에서 JInternalFrame 숨기기

이것이 가능합니까?

내가 JInternalFrame에서 알고있는 것은 setDefaultCloseOperation(HIDE_ON_CLOSE);으로 실현 될 수 있지만 JPanel에서 어떻게 처리해야할지 모르겠다. 물론 나는 그렇게 검색했지만 내 사건에 맞는 것을 찾지 못했습니다.

다른 질문 : 이해를 돕기 위해 X 버튼을 클릭하면 어떻게됩니까? dispose() 함수가 호출 되었습니까? 나는 Java Swing을 처음 접하고 그것이 어떻게 작동하는지에 관심이있다.

+0

*이 가능 * 아니, 그렇지?. 예, 사용자가 "X"를 클릭하면 dispose 메서드가 호출됩니다. –

답변

1

하지만 난 당신이 부모 컨테이너를 찾기 위해 SwingUtilities 클래스를 사용할 수 있습니다

JPanel의

에서 작업을 수행하는 방법을 모르겠어요. 같은

뭔가 :

JInternalFrame frame = (JInternalFrame)SwingUtilities.ancestorOfClass(JInternalFrame.class, thePanel); 
+0

Panel을 초기화 할 때 상위 컨테이너가 없으므로 NullPointerException이 발생합니다. 나중에 사용할 수 없지만 감사합니다. – Ludy

+0

@ 루디, 맞습니다. 구성 요소를 만들 때 해당 코드를 실행하면 안됩니다. 위의 코드는 패널에 추가하는 버튼에 추가하는 ActionListener에서 실행됩니다. – camickr

+0

이제 라인을 사용하는 방법을 발견했습니다. AncestorListener가 나를 위해 일하고 있습니다. BTW는 내 솔루션을 게시해야합니까? – Ludy