2013-10-22 4 views
1

다른 요소에 대한 JPanels 컬렉션이 있습니다. JPanel showPane, seasonsPane, episodesPane, airingsPane
모두 null로 설정된 setLayout을 가지며 고정 크기 304x416입니다. 나는 JPanel의에 그 JPanel의 크기는 1280x416의 showViewPanel라는 등 (아래 JFrame의의 코드는) 같은 BoxLayout가 설정 추가 :자바 JScrollPane BoxLayout을 사용하여 JPanel의 크기를 조정합니다.

showViewPanel.setLayout(new BoxLayout(showViewPanel, BoxLayout.X_AXIS)); 
showViewPanel.setSize(1280, 416); 
showViewScroll = new JScrollPane(showViewPanel); 
add(showViewScroll); 
setSize(304, 416); 
setVisible(true); 

나는 그것이를 생성하지 않는 이유를 알아낼 수 없습니다 무엇 모든 구성 요소를 스크롤 할 수있는보기로 만들고 대신 창 크기와 일치하도록 showViewPanel의 크기를 조정합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

대신 서브 패널의 preferredSize을 304x416으로 대체하십시오. 스크롤 구획은, 컨텐츠의 적절한 사이즈 (컨텐츠의 적절한 사이즈에 의존한다)에 의존합니다.

레이아웃 관리자는 원하는 크기에 따라 서브 패널의 크기를 설정하므로 사용자 정의 크기가 대체됩니다. 일반적으로 null 개의 레이아웃을 없애고 레이아웃 관리자를 사용하는 법을 배워야합니다. 절대 배치는 항상 문제를 야기하며 그렇지 않은 경우에도 번거롭게 할 가치가 없습니다.

3

이 모두는 setLayout이 null로 설정되고 고정 크기 304x416입니다.

널 레이아웃을 사용하지 마십시오! 수동으로 패널의 크기를 설정하지 마십시오! 패널은 레이아웃 관리자를 사용해야하므로 기본 크기가 자동으로 계산됩니다.

모든 패널을 동일한 크기로 만들려면 BoxLayout 대신 기본 패널에 GridLayout을 사용하고 하위 패널을이 패널에 추가하십시오.

레이아웃 관리자가 작업을 수행하도록하려면 스크롤바가 필요할 때 자동으로 나타납니다.