SWT

2011-12-28 9 views
3

에 고정 폭 컨트롤 옆에 컨트롤을 확대 수평으로 만드는 방법은 다음과 달성하고자하는 :SWT

horizontal expansion

하나의 고정 폭 제어를 채우는 수평 확장 제어에 인접

사용 가능한 공간.

는 이미 달성하기 위해 GridLayout을 사용할 수있게되었습니다이 수직 :

vertical expansion

다음 코드를 사용하여 :

parent.setLayout(new GridLayout()); 

Button button1 = new Button(parent, SWT.PUSH); 
button1.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false)); 
button1.setText("First"); 

Button button2 = new Button(parent, SWT.PUSH); 
button2.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); 
button2.setText("Second"); 

을 가로 버전을 할 수있는 방법이 있나요 명시 적으로 열 수를 지정하지 않고도? 다른 GUI 툴킷 (예 : Android, QT 및 GTK)은 이러한 일을 촉진합니다.

현재 내 수평 해결책은 이것이다 :

parent.setLayout(new GridLayout(2, false)); 

Button button1 = new Button(parent, SWT.PUSH); 
button1.setLayoutData(new GridData(GridData.BEGINNING, GridData.FILL, false, true)); 
button1.setText("First"); 

Button button2 = new Button(parent, SWT.PUSH); 
button2.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); 
button2.setText("Second"); 
+0

사용 [MigLayout (http://www.miglayout.com/) 대신에, 그것은 당신을 위해 레이아웃 문제의 엄청난 금액을 해결할] .. – Sorceror

답변

4

당신은 GridLayout의 열 수를 지정해야합니다. 나는 그것이 왜 문제 (그리고 당신이 일하는 것)가되어야하는지 이해하지 못합니다. 보유하고있는 위젯 수에 따라 필요에 따라 기둥 수를 계산할 수 있습니다.

This SWT Layout article은 아주 좋습니다. 첫 번째 개체의 크기를 제어하려면 을 GridData에 지정하십시오.

+1

"문제"열 수를 지정하지 않습니다 ,하지만 중복됩니다. 이상적으로는 지정된 엘리먼트의 수평 확장을 허용하는 복잡하지 않은'Layout' 클래스가 존재할 것입니다. – kostmo

+1

실제로 그리드의 위치를 ​​레이아웃에 알려주고 그리드의 'GridLayout'을 의미하는 수단이 있어야하므로 실제로는 중복되지 않습니다. 많은 레이아웃 관리자가 있으며 훨씬 더 간단하지만 훨씬 적은 기능을 제공합니다. 필자는 GridLayout과 같은 개념을 잘 배우고 모든 용도로 사용하는 것이 좋았습니다. 용도가 다른 5 가지 레이아웃 관리자를 배우는 것이 아니라 매우 유연하고 강력했습니다. –

+2

안드로이드에는'LinearLayout'이 있고, GTK +에는'HBox'가 있습니다. 이상적으로 SWT의 (가로)'RowLayout' 클래스는 지정된 요소의 확장을 허용하지만,'GridLayout' 만 지정된 확장을 지원하는 것으로 보입니다. 격자 기능을 원한다고해도 GridLayout을 사용하고 열 수를 명시 적으로 지정해야합니다. _grid_의 위치를 ​​알려주고 싶지는 않습니다. 단지 하나의 행만 원합니다. 다른 툴킷의 선형 레이아웃 클래스를 사용하면 레이아웃에 추가 된 자식의 수에 따라 열의 수가 추론됩니다. – kostmo