2014-12-15 5 views
0

구성 요소가 컨테이너에서 자체적으로 가질 수있는 영역을 결정하는 방법이 있습니까?구성 요소가 잠재적으로 확장 될 수있는 영역의 크기 결정

나는 MigLayout을 사용하고 있습니다. 컨테이너에 추가 된 두 개의 구성 요소 인 JPanelJSlider이 있다고 가정 해보십시오. JSlider는 컨테이너의 남쪽에 도킹되어 있으며 컨테이너의 크기를 조정할 때 가로로 커지거나 작아집니다. JPanel의 초기 크기는 100x100입니다. 이 시나리오에서 JPanel은 JSlider가 차지하는 영역을 제외하고 컨테이너가 가지고있는 모든 영역을 가질 수 있습니다. 따라서 컨테이너가 400x400 인 경우 JPanel 은 슬라이더의 높이가 16이고 완전히 확장 된 경우 크기가 400x384 인이 될 수 있습니다.

어쨌든 panel.getSize()으로 전화하면 100x100이됩니다. 구성 요소가 일 수있는 영역의 크기를 얻을 수있는 방법이 있는지 알고 싶습니다. 확장 할 수 있습니다. 따라서이 경우 400x384의 크기를 얻으려는 작업을하고 싶습니다. 그림


: 검은 윤곽이 컨테이너을 표시 여기

enter image description here

, 흰색은 누구의 사용 가능한 공간이 난 구성 요소 사용되지 않는 공간, 빨간색 표시된와 슬라이더과 파란색 마크를 표시 결정하려고 노력한다.

+0

왜 사용 가능한 공간을 알아야합니까? 사용자 정의 구성 요소는 필요한 모든 공간을 요청하고 레이아웃 관리자가 공간을 할당하도록해야합니다. – camickr

+0

@camickr 가로 세로 비율을 유지하기 위해 jpanel의 크기를 수동으로 조정하고 있습니다. –

+0

@camickr 그러나이 질문의 핵심은 아닙니다. 나는 무엇이든지 묻고있는 것이 가능하다는 것을 알고 싶다. –

답변

1

레이아웃이 변경됩니다.

예를 들어 BorderLayout을 사용합니다. 그런 다음 빨간색 패널을 남쪽에 추가하고 다른 패널을 BorderLayout의 "가운데"에 추가합니다. 이 다른 패널에는 이제 프레임에서 사용할 수있는 모든 공간이 포함됩니다.

그런 다음 가운데에 추가 한 패널에 파란색 패널을 추가합니다. 이제 사용하실 수 있습니다 :

blue.getParent().getSize(); 

사용 가능한 공간을 결정하십시오.

다른 말로하면 레이아웃 관리자와 함께 레이아웃 문제를 해결하려고 항상 시도하지는 않습니다.

+0

이것은 원래 염두에 두었던 것입니다. 당시에는 조금 익숙하지 않았지만, 나에게 똑같은 해결책을 준 이후로 나는 그걸로 갈 것이라고 생각한다. 그러나, 나는 miglayout에 비해 borderlayout을 사용하는 것이 중요하지 않다. 나는 miglayout에서도 쉽게이 작업을 수행 할 수 있습니다. –