我正在尝试为其中一个复合实现滚动复合(顶部复合,如图所示)。我的目的是仅为上部复合添加滚动条,因为当窗口调整大小时,保存按钮有时会变得不可见。
我尝试过使用上层复合的滚动复合实现。但是当我尝试调整它的大小时,即使我已经设置了scrolledComposite的最小大小,我也没有得到它的滚动条。
另外,当我指定scrolledComposite.setAlwaysShowScrollBars(true)
时,我只能看到处于禁用模式的滚动条的占位符。
以下是我的代码段。
public void init() {
setFocus();
preInit();
createCaseGroup(this);
//Here "this" is the parent composite
Composite childComp = new Composite(this, SWT.None);
childComp.setLayout(new GridLayout(2, true));
childComp.setLayoutData(new GridData(GridData.FILL_BOTH));
final ScrolledComposite scrolledComposite = new ScrolledComposite(childComp,
SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
final Composite Comp = new Composite(scrolledComposite, SWT.NONE);
Comp.setLayout(new GridLayout(2, true));
Comp.setLayoutData(new GridData(GridData.FILL_BOTH));
scrolledComposite.setContent(Comp);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
// scrolledComposite.setMinSize(Comp.computeSize(400, 400) );
scrolledComposite.setMinSize(400, 400);
scrolledComposite.setAlwaysShowScrollBars(true);
objectComposite = new GUIObjectComposite(Comp, SWT.NONE, true);
objectComposite.setLayout(new GridLayout(3, false));
objectComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
objectComposite.init();
objectComposite.isNullSelectionAllowed(false);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
gridData.heightHint = 130;
gridData.horizontalSpan = 2;
objectComposite.setLayoutData(gridData);
GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.verticalSpacing = 0;
objectComposite.setLayout(layout);
// Group for Define interaction(s)
Group defineInteractionGroup = new Group(childComp, SWT.NONE);
GridData defineInteractionGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
defineInteractionGridData.horizontalSpan = 2;
defineInteractionGroup.setLayoutData(defineInteractionGridData);
GridLayout defineInteractionLayout = new GridLayout(1, true);
defineInteractionLayout.marginHeight = 0;
defineInteractionLayout.marginWidth = 0;
defineInteractionLayout.verticalSpacing = 0;
defineInteractionGroup.setLayout(defineInteractionLayout);
defineInteractionGroup
.setText(ResourceAssistant.getString(InteractionExpandedComposite.class, "defineInteraction")); //$NON-NLS-1$
// Composite for Define interaction(s)
Composite interactionComposite = new Composite(defineInteractionGroup, SWT.NONE);
interactionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
GridLayout interactionCompositeLayout = new GridLayout(11, true);
interactionCompositeLayout.marginHeight = 10;
interactionCompositeLayout.verticalSpacing = 0;
interactionComposite.setLayout(interactionCompositeLayout);
Composite actionsComposite = new Composite(interactionComposite, SWT.NONE);
GridData actionsCompositeGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
actionsCompositeGridData.horizontalSpan = 2;
actionsComposite.setLayoutData(actionsCompositeGridData);
ActionsFormProvider actionsFormProvider = new ActionsFormProvider();
List<IFormItem> actionFormItems = actionsFormProvider.generateFormItems();
for (IFormItem actionItem : actionFormItems) {
actionItem.create(actionsComposite);
}
IWorkbenchWindow iWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPartSite activePartSite = iWorkbenchWindow.getActivePage().getActivePart().getSite();
activePartSite.setSelectionProvider(objectComposite.getViewer());
ISelectionService selectionService = iWorkbenchWindow.getSelectionService();
if (selectionService instanceof AbstractSelectionService) {
AbstractSelectionService abstractSelectionService = (AbstractSelectionService) selectionService;
abstractSelectionService.setActivePart(null);
abstractSelectionService.setActivePart(getExpandedView());
}
}