2010-02-04 6 views
2

JPanel을 확장하는 다른 사용자 정의 구성 요소를 추가 할 수있는 자리 표시 자로 사용할 수있는 스윙의 표준 컨테이너 (JPanel?)를 선택해야합니다.스윙 : "얇은"표준 구성 요소가 컨테이너 역할을합니까?

JPanel containerPanel; 
// built by a library from a text file, automatically part of a nice layout 
MyPanel componentPanel; 
// something complicated that I can't integrate with the builder library 

containerPanel = builder.getMyContainerPanel(); 
componentPanel = new MyPanel(...); 
containerPanel.add(componentPanel); 

어떻게 든 두 패널을 결합하는 방법이 있습니까? 크기 때문에 크기 조정이 제대로 작동합니까? 스윙에서 크기 조절이 어떻게 작동하는지 잘 모르겠지만, 원하는 것은 외부 containerPanel이 내 componentPanel과 외부 패널 대리인에게 내재 된 패널에 가능한 한 가벼운 얇은 래퍼가되도록하는 것입니다.

이런 식으로하고 싶지는 않지만 사용자 정의 구성 요소에서 빌더 라이브러리를 분리하는 가장 좋은 방법 인 것 같습니다.

답변

2

나는 간단히 GridLayout을 사용합니다.

containerPanel.setLayout(new GridLayout(1, 1)); 

이 그냥 매개 변수없이 서브 패널을 추가 할 수있는 장점을 가지고 있으며, 전체 영역을 사용하는 보장 :

containerPanel.add(componentPanel); 
2

당신은 BorderLayout를 사용에 위임 컨테이너를 추가 할 수 있습니다 BorderLayout.CENTER 포지션

0

흠. 음, 내 구성 요소를 다시 작성하기로 결정 했으므로 JPanel (상속)을 확장하는 클래스 대신 컴포지션을 사용하고 빈 JPanel을 매개 변수로하여 구성 + JPanel에 하위 구성 요소를 추가합니다. 따라서 빌더 라이브러리를 사용하여 빈 JPanel을 빌드 한 다음 나중에이를 자신의 구성 요소 생성자로 전달할 수 있습니다. 이제는 계속 결합해야하는 두 가지 대신 JPanel이 1 개 있습니다.

관련 문제