스크롤 가능한 내용의 스크롤 된 합성 디스플레이 상태 정보 아래에 고정 된 크기의 내용과 레이블이있는 스크롤 된 합성을하려고합니다. 컨트롤의 부모 크기를 조정하려면 부모의 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();
}
}
라벨을 가지고있는 어떤 도움 (공간 트림) 정확하게 스크롤 복합 아래에 표시하고 스크롤 작업을 감사합니다.
편집 :
예상되는 동작 :
- 추가 수직 공간이 레이블로 잡고해야합니다.
- 셸의 크기를 조정할 때 콘텐츠를 완전히 볼 수없는 경우 스크롤 된 컴포지션이 세로 스크롤을 허용해야합니다.
이렇게하면 이전과 같이 스크롤 된 합성물과 레이블 사이에 표시되는 대신 내용 아래에 추가 공간이 추가됩니다. 스크롤 된 합성물에 내용을 래핑 한 다음 컨트롤 사이에 여분의 공백이없는 레이블을 붙이고 싶습니다. grabExcessVerticalSpace를 FALSE로 설정하면이 작업을 수행 할 수 있지만 수직 스크롤은 작동하지 않습니다. – Monikka
질문을 명확히하십시오 : 여분의 공간은 어디에 있어야합니까? 스크롤 된 합성물은 내용보다 늦어서는 안됩니까? –
레이블에 초과 세로 공간을 부여하고 싶습니다. 즉, 스크롤 된 합성물의 grabverticalspace = false. 그러나 스크롤은 작동하지 않습니다. 그래서 나는 스크롤링이 작동하는 방법을 알아 내고 합성과 라벨 사이에 간격을 두지 않으려 고 노력했다. 질문을 수정했습니다. 수정 사항이 명확한 지 알려주세요. – Monikka