2012-10-22 5 views
1

문자열 목록이있는 목록 상자가 있습니다. 선택한 문자열에 따라 아래에있는 텍스트 상자 그룹을 표시해야합니다. 내 접근 방식은 텍스트 상자의 각 집합에 대해 JPanel을 만든 다음 모든 JPanel을 카드 레이아웃에 배치하는 것입니다. 사용자가 특정 문자열을 선택하면 카드 레이아웃을 뒤집어 텍스트 상자가있는 해당 패널을 표시합니다. 그러나 사용자가 몇 가지 목록 값을 선택하지 않을 가능성이 있기 때문에 모든 패널을 직접 만들지는 않습니다. 따라서 사용자가 목록 값을 선택하는 경우에만 카드 레이아웃에이 카드 (또는 패널)가 추가되었는지 확인하고, 그렇지 않으면 새 패널 (텍스트 상자 포함)을 만들어 카드 레이아웃에 추가합니다.지연 초기화 - CardLayout에 특정 패널이 추가되었는지 테스트합니다.

하지만 특정 패널이 카드 레이아웃에 추가되었는지 테스트 할 수있는 API가 CardLayout 클래스에 없습니다. 이 단지

무효 addLayoutComponent (문자열 이름, 구성 요소 완)

이며이 성공적 카드 laout에 패널의 추가를 테스트하기 위해 아무것도 반환 나던.

어떻게하면됩니까?

답변

4

CardLayout 레이아웃 관리자가 사용하는 Hashtable (심지어 HashMap)은 있지만 내부적으로 만 사용되며 외부에 노출되지 않습니다.

  1. 당신이 만든 패널을 설명하기 위해 별도의 HashMap<String, JPanel>을 유지할 수 :

    다음은이 가능한 해결 방법은 다음과 같습니다.
  2. 수신자 컨테이너에 추가하기 전에 null 인 경우 JPanel 참조 목록을 유지하고 &이 인스턴스화하는지 확인하십시오.
+0

나는 접근 방법 1에 가겠다 고 생각합니다. 고맙습니다. –