Следующий фрагмент кода создает Composite внутри ScrolledComposite.Я также положил ярлык в нем.Вертикальная полоса прокрутки показана, что указывает на то, что композит занимает слишком много места.
@Override
public void createPartControl(Composite parent) {
if (this.parent == null) {
this.parent = parent;
}
parent.setLayout(new GridLayout());
SashForm mainComposite = new SashForm(parent, SWT.NONE);
mainComposite.setLayout(new GridLayout());
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
mainComposite.setLayoutData(gd);
// createLeftSide(mainComposite);
createRightSide(mainComposite);
// mainComposite.setWeights(new int[] { 1, 4 });
}
Проблема возникает только в createRightSide:
private void createRightSide(Composite mainComposite) {
ScrolledComposite detailsSC = new ScrolledComposite(mainComposite, SWT.SMOOTH | SWT.BORDER);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
detailsSC.setLayoutData(gd);
detailsSC.setLayout(new GridLayout(1, true));
Composite detailsComposite = new Composite(detailsSC, SWT.V_SCROLL);
detailsComposite.setLayout(new GridLayout(2, false));
detailsSC.setContent(detailsComposite);
detailsSC.setExpandHorizontal(true);
detailsSC.setExpandVertical(true);
gd = new GridData(SWT.FILL, SWT.FILL, true, true);
detailsSC.setLayoutData(gd);
Label dmyLabel = new Label(detailsComposite, SWT.NONE);
GridData labelData = new GridData();
dmyLabel.setLayoutData(labelData);
dmyLabel.setText("Dummy");
Когда я не использую SWT.FILL
дляmainComposite
субкомпозиты не заполняют пространство.detailsComposite.getVerticalBar().setEnabled(false);
не имеет никакого эффекта, а detailsSC.getVerticalBar()
возвращает ноль;Как я могу сказать композиту, чтобы он не занимал больше места, чем необходимо?