2017-04-03 1 views
-1

다른 z 순서로 JLayeredPane에 두 개의 JPanel 인스턴스가 있습니다. 내 자식 JPanels 모두 항상 LayeredPane의 공간을 채우기를 원합니다.JLayeredPane의 자식이 컨테이너의 사용 가능한 공간을 채우게합니다.

아이디어는 두 번째 패널의 표시를 첫 번째 패널 위로 이동하여 모달과 같은 대화 상자를 표시하는 것입니다. 그래, 난 그냥 JDialog를 사용할 수 있지만 좋은 효과를 위해 덮여 JPanel의 transparancy overtop을 만들도록 노력하는 것이 재미있을 거라 생각했다.

JLayeredPane에서 BorderLayout과 같은 레이아웃 관리자를 사용하고 두 패널 모두 센터에있을 수 없으므로 두 자식을 모두 CENTER 충돌로 설정하려고합니다.

내가보기 싫은 속임수가 있습니까?

+0

"내 자식 JPanels가 항상 LayeredPane의 공간을 채우 길 원합니다."원하는대로 혼란스러워합니다. 이렇게하면 JPanel이 배경을 칠하기 때문에 맨 위 JPanel은 하단 JPanel의 모든 것을 가려냅니다. – ControlAltDel

+0

바로 다음 단락에서 설명하는 요점은 무엇입니까? – gdbj

답변

1

아이디어는 내가 처음

의 맨 위에이 작업을 수행하는 가장 쉬운 방법을 제 2의 패널의 표시를 전환 할 수있는 Glass Pane를 사용하는 것입니다.

이 접근법의 예는 Disabled Glass Pane을 확인하십시오.

+0

이것은 정확히 내가 찾고있는 것 같습니다. 나는 매우 도움이 된 몇 가지 기사와 SO 답변을 이미 검토했다고 덧붙일 수 있습니다. 고마워요! – gdbj

+0

에는 컨테이너의 공간을 채우는 방법에 대한 기본적인 질문이 아직 없습니다. layeredPanel에서 ComponentListener를 사용하여 componentResized를 재정의하여 내 자식 컨테이너의 크기를 설정하려고 시도했지만 mouseup이 아닌 mousedown을 기준으로 크기를 설정합니다. 크기의 타이밍이 잘못되었습니다. – gdbj

+0

기본적으로 구성 요소를 상위 크기로 간단하게 확장하는 최고급 레이아웃 관리자가 필요합니다! 내가이 일에 CSS를 사용할 수 있기를 바랄뿐입니다 ... gah. – gdbj

관련 문제