2013-03-28 7 views
1

SWT를 사용하여 간단한 디스플레이를 만들려고합니다. 지금까지 데이터베이스에서 정보를 성공적으로 표시하고 각 행에 GridLayout이 포함 된 RowLayout을 사용하여 표시했습니다. 그것은 다음과 같습니다 행이 윈도우의 전체 폭을 차지하기 위해 확장하는SWT 눈금 레이아웃 너비

enter image description here

는 내가 정말 원하는 것은. 이것을 어떻게 성취합니까?

도움 주셔서 감사합니다.

답변

6

이것을 달성하는 일반적인 방법은 GridData을 사용하는 것입니다. 이 GridData은 구성 요소에 부모 내에서 동작하는 방법을 알려줍니다 (예 : 부모에게 퍼지는 법. 사용하여

는 :

component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 

당신은 구성 요소가 수평으로 가능한 한 많은 공간을 차지하기 위해 말해 있지만 필요한 공간을 수직으로.

enter image description here

및 크기 조정 후 :

public class StackOverflow 
{ 
    public static void main(String[] args) 
    { 
     Display display = Display.getDefault(); 
     Shell shell = new Shell(display); 

     /* GridLayout for the Shell to make things easier */ 
     shell.setLayout(new GridLayout(1, false)); 

     for(int i = 0; i < 5; i++) 
     { 
      createRow(shell, i); 
     } 

     shell.pack(); 
     shell.open(); 

     while (!shell.isDisposed()) 
     { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 

    private static void createRow(Shell shell, int i) 
    { 
     /* GridLayout for the rows, two columns, equal column width */ 
     Composite row = new Composite(shell, SWT.NONE); 
     row.setLayout(new GridLayout(2, true)); 

     /* Make each row expand horizontally but not vertically */ 
     row.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 

     /* Create the content of the row, expand horizontally as well */ 
     Button first = new Button(row, SWT.PUSH); 
     first.setText("FIRST " + i); 
     first.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 
     Button second = new Button(row, SWT.PUSH); 
     second.setText("SECOND " + i); 
     second.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 
    } 
} 

이 그것을 시작 후 모습입니다 : 여기

당신이 그것을 기대하는 방식으로 행동해야 작은 예입니다

enter image description here


사이드 노트 : 아직 읽지 않았다면 레이아웃에 대한 Eclipse에서 this 튜토리얼 읽기를 제안합니다. 모든 SWT 개발자는 그것을 읽어야합니다.

+0

도움 주셔서 감사합니다. 크기가 다른 열과 함께 동일한 기능을 어떻게 얻을 수 있습니까? –

+0

나는 중첩 된 격자 레이아웃을 사용하여 내가 본 모양을 대략적으로 표현했습니다. 다시 한번 감사드립니다. –