Java 无法在SWT中保留外壳大小

Java 无法在SWT中保留外壳大小,java,swt,Java,Swt,我有一个SWT应用程序,其中向用户显示一个记录器窗口。此窗口中有一个表,并分为几列。我的要求是,如果用户更改了列大小或外壳(窗口大小),然后关闭窗口,那么下次打开同一窗口时,应保留窗口和列的大小,以便保留其对大小的偏好。我可以通过使用 TableColumn[]columns=viewer.getTable().getColumns(); LogViewerColumnSize.INSTANCE.setColumnProperties(列); 当我再次打开shell时,我正在根据数据设置每列的

我有一个SWT应用程序,其中向用户显示一个记录器窗口。此窗口中有一个表,并分为几列。我的要求是,如果用户更改了列大小或外壳(窗口大小),然后关闭窗口,那么下次打开同一窗口时,应保留窗口和列的大小,以便保留其对大小的偏好。我可以通过使用

TableColumn[]columns=viewer.getTable().getColumns();
LogViewerColumnSize.INSTANCE.setColumnProperties(列);
当我再次打开shell时,我正在根据数据设置每列的大小。 然而,同样的,我不能得到的外壳。 我试过下面的方法-

LogViewerColumnSize.INSTANCE.setLoggerSize(shell.getSize());
当我再次打开外壳时-

Point shellSize=LogViewerColumnSize.INSTANCE.getLoggerSize();
if(外壳大小!=null)
外壳尺寸(外壳尺寸);
它将再次设置为外壳大小的默认值


请提供帮助。

如果您正在调用
Shell.pack()
在此之后调用
setSize
调用
pack
将使用计算的默认大小覆盖调用
setSize
时的大小


因此,如果您已经设置了尺寸,请不要致电
pack

谢谢greg!!现在一切正常!