2016-09-13 1 views
0

스크롤 가능한 내용의 스크롤 된 합성 디스플레이 상태 정보 아래에 고정 된 크기의 내용과 레이블이있는 스크롤 된 합성을하려고합니다. 컨트롤의 부모 크기를 조정하려면 부모의 GridLayout을 사용합니다. 하지만 스크롤 된 복합 요소의 스크롤 막대와 레이블 컨트롤의 위치에 문제가 있습니다. 나는 내가 scrolledcomposite이 초과 수직 공간을 잡아 허용하는 경우GridLayout을 사용할 때 스크롤 막대를 ScrolledComposite에서 사용하려면 어떻게해야합니까?

grabExcessVerticalspace = true 

는, 라벨이 scrolledcomposite 아래에 표시되지 않습니다으로 scrolledcomposite의 그리드 데이터 속성을 설정하지 않는 즉, 스크롤 인해 ​​그들 사이의 공간에 작동하지 않습니다 .

public class Snippet5 { 

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

    // this button is always 400 x 400. Scrollbars appear if the window is 
    // resized to be too small to show part of the button 
    ScrolledComposite c1 = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); 
    Button b1 = new Button(c1, SWT.PUSH); 
    b1.setText("fixed size button"); 
    b1.setSize(400, 400); 
    c1.setAlwaysShowScrollBars(true); 
    c1.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true)); 
    c1.setContent(b1); 

    Label l = new Label(shell, SWT.BORDER); 
    l.setText("button clicked"); 
    GridData layoutData = new GridData(SWT.LEFT, SWT.TOP, true, false); 
    layoutData.heightHint = 30; 
    layoutData.widthHint = 400; 
    l.setLayoutData(layoutData); 

    shell.setSize(600, 300); 
    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) 
     display.sleep(); 
    } 
    display.dispose(); 
    } 
} 

라벨을 가지고있는 어떤 도움 (공간 트림) 정확하게 스크롤 복합 아래에 표시하고 스크롤 작업을 감사합니다.

편집 :

예상되는 동작 :

  1. 추가 수직 공간이 레이블로 잡고해야합니다.
  2. 셸의 크기를 조정할 때 콘텐츠를 완전히 볼 수없는 경우 스크롤 된 컴포지션이 세로 스크롤을 허용해야합니다.

enter image description here

답변

0

은 당신과 같이 FILLScrolledComposite의 레이아웃 데이터를 설정해야합니다

new GridData(SWT.FILL, SWT.FILL, true, true); 

이 방법의 ScrolledComposite 그리드 셀의 사용 가능한 공간을 차지합니다.

+0

이렇게하면 이전과 같이 스크롤 된 합성물과 레이블 사이에 표시되는 대신 내용 아래에 추가 공간이 추가됩니다. 스크롤 된 합성물에 내용을 래핑 한 다음 컨트롤 사이에 여분의 공백이없는 레이블을 붙이고 싶습니다. grabExcessVerticalSpace를 FALSE로 설정하면이 작업을 수행 할 수 있지만 수직 스크롤은 작동하지 않습니다. – Monikka

+1

질문을 명확히하십시오 : 여분의 공간은 어디에 있어야합니까? 스크롤 된 합성물은 내용보다 늦어서는 안됩니까? –

+0

레이블에 초과 세로 공간을 부여하고 싶습니다. 즉, 스크롤 된 합성물의 grabverticalspace = false. 그러나 스크롤은 작동하지 않습니다. 그래서 나는 스크롤링이 작동하는 방법을 알아 내고 합성과 라벨 사이에 간격을 두지 않으려 고 노력했다. 질문을 수정했습니다. 수정 사항이 명확한 지 알려주세요. – Monikka

관련 문제