如何为TreeViewer启用滚动条

时间:2014-10-13 06:46:32

标签: java swt jface

我需要构建一个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的另一个滚动条。

我可以用一个滚动条实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

我删除了ScrolledComposite并解决了这个问题。 TreeViewer本身动态处理滚动条。