2014-10-22 3 views
1

내 주요 양식에서 새 양식을 표시하고 싶습니다.자바 - 스윙 - JOptionPane 패딩

새 양식을 열면 부모를 클릭하면 자식이 포커스를 가져 오기 때문에 자식으로 처리해야합니다. JFrames 분명히 모달되지 않습니다, 그래서 내가 사용하고 있습니다 : MYPANEL 내가 내 양식에 필요한 동일 보이는 경우

JOptionPane.showOptionDialog(null, MYPANEL, "Title", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null); 

....

이것은 패널 가장자리와 JOptionPane 대화 상자 프레임 사이에 패딩 (약 20px 정도)이있는 것을 제외하고는 의도 한대로 100 % 작동합니다.

어떻게 제거하나요?

치수가 0 인 빈 경계선을 패널의 테두리로 설정하면 아무 것도 변경되지 않습니다.

+3

'JDialog'를 사용하는 대화 상자 만들기 – MadProgrammer

답변

3

치수가 0 인 빈 경계로 패널의 테두리를 설정하면 아무 것도 변경되지 않습니다.

대화 상자의 내용 창의 경계를 설정해야합니다.

UIManager.put("OptionPane.border", new EmptyBorder(0, 0, 0, 0)); 

자세한 내용은 UIManager Defaults를 참조하십시오 : 그것은 모든 LAF의에서 작동하지만 당신은 금속 및 Windows에 대해 다음을 사용할 수 있는지 모르겠어요.

이렇게하면 모든 옵션 창에 대한 속성이 변경됩니다. 따라서 기본 테두리를 저장하고 옵션 창을 만든 다음 다른 옵션 창을 만들기 위해 원래 테두리를 복원 할 수 있습니다.

또 다른 옵션은 ContainerListener을 패널에 추가하는 것입니다. 그런 다음 componentAdded(...) 이벤트를 처리 할 수 ​​있습니다. 이벤트가 생성되면 부모 패널을 가져 와서 테두리를 제거 할 수 있습니다.