Java 如何将JFace表固定到SWT布局?

Java 如何将JFace表固定到SWT布局?,java,swt,jface,Java,Swt,Jface,我正在SWT中创建一个breadcrumb控件,它在顶部显示一个用于搜索文件系统上某个位置的栏,在该栏下方使用TableViewer显示结果,即给定位置的文件夹和文件。问题是,一旦数据加载到表中,我尝试最大化窗口,表就会折叠(有时完全消失),在下面留下一个空白,并使其自身可以滚动。下面是最大化前的图像 这是在最大化窗口后发生的 应该采取什么措施来纠正这一点?这是我创建查看器的代码 DirectoryViewer container = new DirectoryViewer(this, SWT

我正在SWT中创建一个breadcrumb控件,它在顶部显示一个用于搜索文件系统上某个位置的栏,在该栏下方使用TableViewer显示结果,即给定位置的文件夹和文件。问题是,一旦数据加载到表中,我尝试最大化窗口,表就会折叠(有时完全消失),在下面留下一个空白,并使其自身可以滚动。下面是最大化前的图像

这是在最大化窗口后发生的

应该采取什么措施来纠正这一点?这是我创建查看器的代码

DirectoryViewer container = new DirectoryViewer(this, SWT.BORDER|SWT.V_SCROLL|SWT.FULL_SELECTION);
GridData conData = new GridData();
conData .horizontalAlignment = SWT.FILL;
conData.verticalAlignment = SWT.FILL;
conData .grabExcessHorizontalSpace = true;
conData.grabExcessVerticalSpace = true;
conData .horizontalSpan = 3;
container.getTable().setLayoutData(conData);
以及DirectoryViewer的构造函数:

 public DirectoryViewer(Composite parent, int style) {
        super(parent, style);
        Table table = getTable();
        GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
        gridData .horizontalSpan = 3;
        table.setLayoutData(gridData);
        createColumns();
        table.setHeaderVisible(true);
        setContentProvider(new ContentProvider());
    }

这并不是说这有什么区别,但是为什么要将
表的
布局数据设置两次呢?@Baz我正在检查这是否有效:/DirectoryViewer是什么样的数据结构?你在什么地方设置了它的
LayoutData
吗?@Baz是一个直接从TableViewer扩展的类,不,我不会在任何地方设置它的布局。如果你在扩展
TableViewer
,那你就没事了。我看不出你的代码有什么问题(至少你提供的部分是这样)。