2017-11-16 1 views
-1

Eclipse에서 WindowBuilder를 사용하여 SWT GUI를 작성하고 있습니다. 나는이 물건을 알고 있었지만 자바에서 약 8 년 동안은 떨어져있었습니다.간단한 SWT 레이아웃

내가하고 싶은 일은 흔한 일이지만, 레이아웃 시스템과 싸우고 있다는 사실은 내가 잘못된 길로 가고 있다는 것을 말해 준다.

내가 원했던 것은 목록 아래에 3 개의 버튼이있는 목록 (표준 +/-/편집 버튼)입니다. 버튼을 고정 된 높이로 만들고 목록에 나머지 모든 세로 공간을 사용하고 싶습니다. 마찬가지로, 수평 공간은 목록/버튼이 포함 된 복합 요소와 양식이 포함 된 복합 요소로 나뉩니다.

동일한 기술이 수평 레이아웃에 적용될 것이라 확신하므로 목록 + 버튼의 수직 레이아웃에만 집중할 것입니다.

그래서 필자는 외부 채우기 레이아웃 (세로)을 가지고 있습니다. 이 합성물에는 채우기 레이아웃 (수평)이있는 목록 및 내부 합성이 포함됩니다. 내부 컴포지트에는 3 개의 버튼이 있습니다.

레이아웃에서 버튼의 크기를 세로 방향으로 조정하고 싶지는 않습니다. 30 픽셀로 고정하고, 나머지 모든 세로 공간은 목록으로 이동합니다.

resize 리스너를 내부 컴포지트에 넣고 크기를 30으로 설정하기 위해 setSize를 사용했지만 사용하지 않은 공간을 목록에 다시 할당하지 않았습니다. 강제로 다시 레이아웃을 시도했지만 작동하지 않는 것 같습니다.

분명히, 나는 옛날 옛적에 알고 있던 기본 개념을 놓치고 있습니다.

모든 포인터? 감사!

+0

레이아웃을 사용하는 경우 레이아웃이 일반적으로 크기를 무시하기 때문에 무엇이든'setSize'를 호출해서는 안됩니다. 크기를 결정할 때 좀더 제어 할 수있는'GridLayout'과 같은 레이아웃을 사용하고 싶을 것입니다. 우리에게 [mcve] –

답변

0

나는 이것을 알아낼 수 있었다. greg-449가 지적한대로 핵심은 외부 컴포지트의 Grid 레이아웃을 사용한 다음 내부 컨트롤의 LayoutData에서 grabAllVerticalSpace를 True로 설정하고 verticalAlignment를 FILL로 설정하는 것입니다. 버튼 행의 경우 verticalAlignment를 Bottom으로 설정하고 (아마도 필요하지는 않음) heightHint 및 minimumHeight를 30으로 설정합니다.

상위 컴포지트에서 가로 맞춤과 비슷한 방법을 사용 했으므로 이제는 나는 의도했다.