2009-10-05 11 views
1

JPanel이있는 JFrame이 있습니다.Java 1.6에서 기본 add()를 사용하여 다른 JPanel에 Jpanel을 추가하면 추가 된 패널이 표시되지 않는 이유는 무엇입니까?

JFrame의 Jpanel에 사전 구성된 구성 요소 인 다른 JPanel을 추가하고 싶습니다. 내가 이렇게하면

:

subPanel.setLayout(new BorderLayout()); 
    subPanel.add(preconfiguredPanel,BorderLayout.CENTER); 

내 패널이 표시됩니다. 내가 이렇게하면

:

subPanel.add(preconfiguredPanel); 

내 인 JPanel는 표시되지 않습니다. 문서에서는 add (Component)를 사용할 때 기본 레이아웃 FlowLayout을 사용할 것이라고 말합니다. 좋아,하지만 기본 구성 요소 FlowLayout을 사용할 때 내 구성 요소가 JPanel 내부에 표시되지 않는 이유는 무엇입니까 ???

+2

frame.pack() 및 frame.setVisible (true)을 수행하고 있습니까? – amischiefr

+0

예. 물론 외부 프레임에서도 ... – Zak

+0

도 나머지 프레임은 잘 표시됩니다. 지주 패널에 테두리를 추가하고, 기본 레이아웃을 사용하는 경우 지주 패널은 1x1 픽셀 (또는 0x0 일 수도 있음)입니다. 테두리 레이아웃을 사용할 때 미리 구성된 패널의 기본 크기입니다. – Zak

답변

4

아마 당신의 패널에 기본 크기가 없기 때문일 것입니다.

패널을 BorderLayout에 추가하면 기본적으로 중앙에 배치되므로 패널 크기가 자동으로 프레임 크기로 조정됩니다.

패널을 FlowLayout에 추가하면 플로 레이아웃이 패널 크기를 재현합니다.

도움이 더 필요하면 SSCCE를 게시하십시오.

+0

NetBeans를 사용하여 다양한 구성 요소를 레이아웃합니다. 내 구성 요소의 크기가 NetBeans를 사용하기에 적당한 크기가 아니십니까? 이것은 BorderLayout을 사용하거나 JFrame에 직접 추가하여 pack()을 수행 할 때와 동일한 정확한 크기입니다. 구성 요소 JPanel을 확인해야하는 함수의 반환 값에 대해보다 구체적으로 설명 할 수 있습니까? – Zak

+0

레이아웃을 사용하는 Swing 패널에 Swing 구성 요소를 추가하는 경우 패널의 크기가 기본 설정이어야합니다. 레이아웃 관리자없이 JPanel을 사용하거나 사용자 정의 페인팅을 수행하는 경우 기본 크기가 없습니다. SSCCE를 게시하지 않았기 때문에 정확한 원인을 추측 할 수 없습니다. – camickr