Я пытаюсь получить прокручиваемый композит с содержимым фиксированного размера и меткой под прокручиваемой композитной информацией о состоянии отображения прокручиваемого контента. Поскольку я хочу, чтобы размеры элементов управления изменялись вместе с родителем, я использовал GridLayout для их родителя. Но я столкнулся с проблемой с полосами прокрутки прокручиваемой композиции и позиционированием элемента управления меткой. то есть прокрутка не работает, если я не устанавливаю атрибут данных сетки scrolledcomposite как
grabExcessVerticalspace = true
Если я позволю прокручиваемому композиту захватить лишнее вертикальное пространство, метка не появится под прокручиваемым композитом из-за пространства между ними.
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();
}
}
Приветствуется любая помощь в том, чтобы метка отображалась точно под прокручиваемым составным элементом (обрезка пробела) и выполнялась прокрутка.
Изменить:
Ожидаемое поведение:
- Дополнительное вертикальное пространство, которое будет занято этикеткой.
- Scrolledcomposite должен включать вертикальную прокрутку, когда содержимое не может быть просмотрено полностью при изменении размера оболочки.