我需要构建一个JFace对话框,其中包含TreeViewer
。
这就是我覆盖createDialogArea(Composite)
方法的方法:
@Override
protected Control createDialogArea(Composite parent)
{
parentComposite = (Composite) super.createDialogArea(parent);
parentComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
sc = new ScrolledComposite (parentComposite, SWT.H_SCROLL | SWT.V_SCROLL);
composite = new Composite (sc, SWT.NONE);
composite.setLayout(new GridLayout(1,false));
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
TreeViewer viewer = new TreeViewer(composite);
viewer.setContentProvider(new ExplorerContentProvider(rootFolderType, shell));
viewer.setLabelProvider(new ExplorerLabelProvider());
viewer.setInput(rootFolderComponent);
sc.setContent(composite);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
return parentComposite;
}
使用上面的代码,这是我的观察:
我在树中有100个元素,所以我有一个外滚动条(因为我使用了ScrolledComposite
)。然后,如果我展开每个元素,我会得到TreeViewer
的另一个滚动条。
我可以用一个滚动条实现这一目标吗?
答案 0 :(得分:1)
我删除了ScrolledComposite并解决了这个问题。 TreeViewer本身动态处理滚动条。