2014-09-28 3 views
0

2 개의 그룹이 포함 된 합성을 만들고 싶습니다. 2 그룹은 합성과 동일한 너비를 가지며 크기를 조정할 수 있습니다.SWT 그룹에서 스크롤 합성 만들기

그룹 1에는 스크롤 가능한 합성물이 들어 있습니다. 이 Scrollable Composite는 고정 높이 = 400이고 텍스트 필드가 20 개 포함되어 있습니다. ==> show V_SCROLL

Group2 텍스트 필드가 포함되어 있고 동적 인 것이고, 최소 크기는 100이며 높이 합성에 의해 크기가 재조정됩니다. 복합)

나는이 레이아웃을 구축하려고하지만 그룹 1은 항상 복합을 풀 채우고 나는 그룹 2

당신은 당신의 높이를 설정하는 GridData#heightHintGridData#minimumHeight을 사용할 수 있습니다 감사합니다

답변

5

를 볼 수 없습니다. 그러나 필요한 크기가 사용 가능한 화면 크기를 초과 할 수 있으므로 특정 크기를 적용하면 모든 화면 해상도에서 제대로 작동하지 않을 수 있습니다.

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    Shell shell = new Shell(); 
    shell.setText("StackOverflow"); 
    shell.setLayout(new GridLayout(1, false)); 

    Group first = new Group(shell, SWT.NONE); 
    first.setText("Group 1"); 
    first.setLayout(new GridLayout(1, false)); 
    GridData firstData = new GridData(SWT.FILL, SWT.FILL, true, false); 
    firstData.heightHint = 400; 
    first.setLayoutData(firstData); 

    ScrolledComposite firstScroll = new ScrolledComposite(first, SWT.V_SCROLL); 
    firstScroll.setLayout(new GridLayout(1, false)); 
    firstScroll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    Composite firstContent = new Composite(firstScroll, SWT.NONE); 
    firstContent.setLayout(new GridLayout(1, false)); 
    firstContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    for (int i = 0; i < 20; i++) 
    { 
     Text text = new Text(firstContent, SWT.BORDER); 
     text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 
    } 

    firstScroll.setContent(firstContent); 
    firstScroll.setExpandHorizontal(true); 
    firstScroll.setExpandVertical(true); 
    firstScroll.setMinSize(firstContent.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

    Group second = new Group(shell, SWT.NONE); 
    second.setText("Group 2"); 
    second.setLayout(new GridLayout(1, false)); 
    GridData secondData = new GridData(SWT.FILL, SWT.FILL, true, true); 
    secondData.minimumHeight = 100; 
    second.setLayoutData(secondData); 

    Text text = new Text(second, SWT.BORDER | SWT.MULTI); 
    text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    shell.pack(); 
    shell.setSize(400, shell.getSize().y); 
    shell.open(); 

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

는 다음과 같습니다 :

enter image description here

+0

감사 바즈 많은, 즉 내가 –

+0

+1을 필요로하는 정확한 일이

그러나, 여기 당신을 도움이 간단한 예입니다. 코드와 스크린 샷으로 @Baz 좋은 설명 –