1

테두리 레이아웃이있는 JTabbedPane이 있습니다.JScrollPane의 일정 크기 설정

add(columnNames, BorderLayout.NORTH); 
add(scroll, BorderLayout.CENTER); 
add(useCtrl, BorderLayout.SOUTH); 
setVisible(true); 

질문 : 주목하라 JScrollPane의 내부 오른쪽에있는 여분의 공백

enter image description here

는 여기가 구성 요소를 추가하기 위해 사용하고 코드입니다. 나는 거기에 그것을 원하지 않는다. JFrame의 크기를 변경할 때 JScrollPane이 전혀 크기를 변경하지 않기를 바란다. setSize() 및 setPreferredSize()를 시도했지만 JScrollPane의 크기가 항상 변경됩니다. GridLayout을 사용해 보았지만 같은 결과가 나옵니다.

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

[레이아웃 관리자를위한 시각 안내서] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)를 참조하십시오. 이미 언급했듯이,'BorderLayout'은 기본적으로 사용 가능한 모든 공간을 중앙 컴포넌트에 넘깁니다 ... – MadProgrammer

답변

4

JScrollPaneJPanel에 다른 레이아웃으로 배치하십시오. (예 : BoxLayout 또는 GridBagLayout). 그리고 JPanel을 센터에 추가하십시오.

3

그래픽 객체의 크기는 레이아웃 관리자에 의해 제어됩니다. BorderLayout은 항상 CENTER 개체를 확장하여 사용 가능한 모든 공간을 차지합니다. GridLayout은 모든 자식을 비례 적으로 확장합니다. GridBagLayout을 시도하고 weightx을 0으로 설정하면 가로 확장이 금지됩니다.

사용할 수있는 레이아웃 관리자가 많습니다. 더 많은 선택과 실험을 위해 API를 탐색하고 원하는 크기 조정 동작을 찾을 때까지 실험하십시오. 각각은 javadoc에서 어떻게 작동하는지 꽤 잘 설명되어 있습니다.