문제

많은 컨트롤로 다소 큰 형태를 구축해야합니다. 컨트롤이 나뉩니다 기초적인 컨트롤/설정 및 펼친 컨트롤/설정. 사용자는 기본 또는 기본 및 확장 된 컨트롤만을보고 싶은지 결정할 수 있습니다.

이 패널을 보여 주거나 숨겨서 두 뷰를 쉽게 전환 할 수 있도록 모든 확장 된 컨트롤을 자신의 jpanel에 삭제했습니다.

현재 GrouPlayout을 사용하고 있으며 다른 패널의 컨트롤이 정렬되지 않은 일입니다.

Label aaa:     Text field
Label a:       Text field
Label aaaaaa:  Text field
----------------------------
Label b:    Text field
Label bbb:  Text field
Label bb:   Text field

불행히도 나는 이제 두 패널의 레이아웃을 "동기화"하는 방법을 찾았습니다 (AbsoluteLayout 및 고정 제어 좌표를 제외하고)

  • 이것을 달성 할 수있는 방법이 있습니까?
  • 내 디자인 전체가 결함이 있습니까?

편집하다: 가능하다면 GrouPlayout 관리자를 유지하고 싶습니다.

도움이 되었습니까?

해결책

내가 아는 한, 스윙 레이아웃 관리자 (JRE 또는 오픈 소스)는 여러 패널에 걸쳐있을 수 없습니다.

나는 현재 내에 대한 그러한 기능 ( "레이아웃 동기화"라고 함)을 연구하고 있습니다. DesignGridLayout 프로젝트, 그러나 그것은 구현하기 쉬운 것이 아닙니다 (나는 약 2 주 전에 시작했지만 여전히 흥미로운 무언가에 도달 할 것인지 정확히 알 수 없지만 여전히 높은 희망을 가지고 있습니다 ;-)).

확인할 수있는 옵션 중 하나는 동일한 패널에 모든 구성 요소를 추가하고 (한 번만 한 번만) 사용자 선택에 따라 숨기기/표시하는 것입니다. 잘만되면 GrouPlayout은 크기를 상황에 맞게 조정합니다 (Pack () 호출 후).

GrouPlayout이 잘 작동하면 사용자가 선택을 변경 한 후마다 확장 된 필드를 표시/숨기기 위해 팩 ()을 호출하는 문제 일뿐입니다.

그렇지 않으면 사용자가 선택을 변경할 때마다 패널의 크기를 수동으로 설정해야합니다.

다른 팁

아마도 가장 쉬운 (좋은) 방법은 모든 구성 요소를 메인 패널에 추가하는 것입니다. 서브 패널을 비대형으로 설정하고 메인 패널에도 추가하십시오. 메인 패널 필요는 최적화 된 드로잉을 끕니다.

또 다른 기술은 스페이서 구성 요소를 추가하는 것입니다. 하단 패널에는 상단 레이블에서 다양한 크기 메소드의 너비 구성 요소를 동적으로 가져 오는 레이블과 동일한 열에 구성 요소를 추가합니다. 상단 패널로 반대쪽으로 동일하게 수행하십시오.

표준 레이아웃 관리자와 함께 할 방법이 없다고 생각합니다. 자신의 레이아웃 관리자를 작성해야 할 것입니다. 그러나 GrouPlayout 하위 클래스가 있으면 너무 어렵지 않아야합니다.

grouplayout 대신 gridlayout을 사용할 수있어 열 사이에 균일 한 간격을 줄 수 있습니다.

별도의 레이아웃이있는 별도의 패널에 보관하려면 :

추가하는 모든 레이블을 반복하고 각 라벨을 최대 선호하는 폭을 찾으십시오. 두 번째로 반복하고 선호하는 크기를 각 레이블의 선호하는 높이로 설정하지만 최대 너비를 설정하십시오.

이것은 Th에 대한 설명입니다 그리드 레이아웃. 이렇게하면 모든 구성 요소가 크기로 설정됩니다. GridData 객체를 사용하면 구성 요소의 주문 방법을 지정할 수 있습니다.

alt text
(원천: Sun.com)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top