2012-10-11 3 views
0

4 개의 버튼을 만드는 메소드가 있습니다. 단추는 왼쪽에서 오른쪽으로 서로 옆에 있습니다.SWT - GridData Layout

|-[b1] [b2] [b3] [b4]-----------------| <- edge of dialog 

나는

|-[b1] [b2]-----------------[b3] [b4]-| <- edge of dialog 

GridLayout gridLayout = new GridLayout(6, false); 

에 레이아웃을 변경하지만, B2 및 B3 사이에 빈 공간이 할 수 있도록하려는 사이의 공간을 얻을 어떻게 확실하지 버튼. 레이아웃의 특정 그리드 번호에 버튼을 지정할 수 있습니까?

b1 = 1 
b2 = 2 
b3 = 5 
b4 = 6 
+2

빈 문자열 레이블을 3과 4에 할당 할 수 있습니다. –

답변

3

Layout는 좌측 위로부터 우측 아래를 한 번에 하나 개의 슬롯을 채운다. 따라서 슬롯을 건너 뛸 수 없습니다. 이미 의견 길버트에 의해 언급 한 바와 같이 그러나, 당신은 빈 라벨과 함께 "사용하지 않는"슬롯을 채울 수 :

Button buttonOne = new Button(parent, SWT.PUSH); // 1. slot 
Button buttonOne = new Button(parent, SWT.PUSH); // 2. slot 

new Label(parent, SWT.NONE) // 3. slot 
new Label(parent, SWT.NONE) // 4. slot 

Button buttonThree = new Button(parent, SWT.PUSH); // 5. slot 
Button buttonFour = new Button(parent, SWT.PUSH); // 6. slot 

주, 당신이하지 그들을 할당 (Label labelOne = ...)가 수행하는 것이 이후 당신은 그들을 사용하지 않을 것입니다. GridData (할당

GridLayout gridLayout = new GridLayout(6, true); 

대신

GridLayout gridLayout = new GridLayout(6, false); 

의 그렇지 않으면 필요할 수 있습니다 :


사용하는 즉, 모든 컬럼의 동일한 간격을 강제하는 것이 좋습니다 수 있습니다 가로로 채우기 위해) 더미 Label에요.


는 다른 시나리오, 그것은 또한 horizontalSpanGridData의를 사용하는 것이 관심의 대상이 될 수 있습니다 : 당신이 레이아웃의

이 경우
Button button = new Button(parent, SWT.PUSH); 
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); 
data.horizontalSpan = 2; 
button.setLayoutData(data); 

, 버튼을 최대 2 개 슬롯이 소요됩니다.