swt表不使用鼠标滚轮滚动

zengzsys  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(341)

我正在创建一个jface表,如下所示:

final Table table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION);

并期待滚动(与标题固定在顶部),但我没有得到我所期望的。有两个垂直和水平滚动条,我可以滚动表,但
列标题将滚动到视图之外
我不能用鼠标滚轮滚动,即使它在焦点上。
我真的需要自己补充吗?
更多细节:
我使用我的表作为一个masterdetails块的细节部分。
我的detailspage类扩展了abstractformpart并实现了idetailspage。

@Override
public void createContents(final Composite parent) {
    final Layout layout = new FillLayout();
    parent.setLayout(layout);
    createViewer(parent);

}
    private void createViewer(final Composite parent) {
        final Table table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION);

//      this.viewer = new TableViewer(parent, SWT.MULTI | /*SWT.H_SCROLL | SWT.V_SCROLL |*/ SWT.FULL_SELECTION | SWT.BORDER);
        this.viewer = new TableViewer(table);
        createColumns(parent, this.viewer);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        this.viewer.setContentProvider(new ArrayContentProvider());
        // get the content for the viewer, setInput will call getElements in the
        // contentProvider
        this.viewer.setInput( /createInput() );
        // make the selection available to other views
        this.editor.getSite().setSelectionProvider(this.viewer);
        ...
    }

createinput()返回我的元素数组。注解掉的部分是我最初的尝试,也不起作用。

s5a0g9ez

s5a0g9ez1#

我不知道为什么这样做有效,但是当我将details页面的布局更改为gridlayout并为表提供以下griddata时,它就如预期的那样工作了。

final GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.widthHint = 500;
    gd.heightHint = 120;
    table.setLayoutData(gd);

我从这里得到了消息

相关问题