SWT-如何限制文本垂直占据所有空间并隐藏其他控件

时间:2013-10-28 07:32:22

标签: java swt

我有一个SWT文本,内容很大。由于它的内容,当我最大化窗口文本框将垂直增长并隐藏剩余的控件。

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 ) );

如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

它完全取决于您如何将contentText放置在布局本身中。例如,如果你使用的是GridLayout(只有一个)而且它是一个说法,1 X 2网格(或者n X 2,因为你只需要控制给定行中有多少列用于网格布局),并将contentText对象放在'right'网格中,并像使用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) 

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

现在,这可能是由于您如何构建整体复合/表单,以及哪些对象包含在哪些复合材料等等中。一个小因素会使事情失去很多。但是,学习如何使用各种布局数据构造函数来为您而不是对您工作,这在SWT中是一个巨大的好处。我会看一下here来更全面地理解布局,并且真正关注你正在制作的这些构造函数中的每个参数。很多时候,您不需要完整的6参数构造函数,还有其他选项。

祝你好运!