0

I have a SWT text and it have large contents. Because of its contents when I maximize window textbox will grow vertically and hides remaining controls.

Text contentText=new Text( GroupName, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.WRAP );

contentText.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 1 ) );

How to solve this?

Thanks

4

1 回答 1

0

它完全取决于您如何将 contentText 放置在布局本身中。例如,如果您使用的是GridLayout(只有一个)并且它是一个 1 X 2 网格(或者实际上是 n X 2,因为您只需要控制给定行中有多少列用于网格布局),然后您放置'right' 网格中的 contentText 对象,并像使用 gridData 一样实例化 contentText :

    contentText.setlayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1,1));

让我们看看所有这些参数到底发生了什么。从 : swt api on GridData,您正在使用此构造函数:

    GridData(int horizontalAlignment, int verticalAlignment, boolean grabExcessHorizontalSpace, boolean grabExcessVerticalSpace, int horizontalSpan, int verticalSpan) 

好吧,这告诉我的是,我们希望我们的 contentText 使用 SWT.FILL 参数来进行水平和垂直对齐(我相信,使对象在水平和垂直方向上等间距)。您确实希望它尽可能多地抓住过多的水平和垂直空间,并且您希望它在水平和垂直方向上跨越一个网格元素。现在,虽然这本身不会覆盖并静态覆盖屏幕上的所有其余控件,但是当您调整大小时,您仍然在告诉 contentText 尽可能多地占用垂直空间(它在水平方向上受到限制由我想象的同一复合/网格布局中的其他对象,这就是为什么你在那里看不到任何覆盖的原因)。

现在,这可能是由于您如何构建整体组合/表单,以及哪些对象包含在哪些组合中等等。一个小因素会让事情变得很糟糕。然而,学习如何使用各种布局数据构造函数为您工作而不是反对您,在 SWT 中是一个巨大的好处。我会在这里看一下以更彻底地了解布局,并且实际上只需注意您正在制作的这些构造函数中的每个参数。很多时候您不需要完整的 6 参数构造函数,还有其他选项。

祝你好运!

于 2013-10-31T13:24:36.720 回答