Java 在组内布置SWT文本控件的难度

Java 在组内布置SWT文本控件的难度,java,swt,Java,Swt,我在让SWT文本控件按照我希望它们在组中的方式进行布局时遇到问题。具体来说,我很难将verticalSpan传递到GridData以反映在GUI资产中。在下面的示例中,我无法正确显示的3个控件是descriptionText、defaultActionText和defaultReportActionText,但translationText显示正确。我不确定我在这里做错了什么,所以我感谢您的反馈 组: paramsFieldComposite = new Group( upperRigh

我在让SWT文本控件按照我希望它们在组中的方式进行布局时遇到问题。具体来说,我很难将
verticalSpan
传递到
GridData
以反映在GUI资产中。在下面的示例中,我无法正确显示的3个控件是
descriptionText
defaultActionText
defaultReportActionText
,但
translationText
显示正确。我不确定我在这里做错了什么,所以我感谢您的反馈

组:

    paramsFieldComposite = new Group( upperRightComposite, SWT.BORDER );
    // TODO: Change group to composite and remove .setText()
    paramsFieldComposite.setText( "paramsFieldComposite" );
    paramsFieldComposite.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 1 ) );
    paramsFieldComposite.setLayout( new GridLayout( 2, true ) );
翻译控件(宽度为1,高度为3,与我预期的一样工作):

描述/操作控件(未按预期工作,我希望它们的高度均为3,而不是1):

以下是GUI的外观


很容易解释
translationText
defaultActionText
的行为之间的区别

你让他们两个都跨3排。然而,尽管这三行
translationText
的高度是由其他
小部件定义的(
hostnameText
instanceLabel
instanceText
),但
defaultActionText
的情况并非如此。这三行中没有其他小部件(除了
defaultReportActionText
)。因此,高度将设置为必要的高度

您可以通过设置
GridData
heightHint
手动增加此高度:

GridData data = new GridData( SWT.FILL, SWT.FILL, true, false, 1, 3 );
data.heightHint = 80;

defaultActionText.setLayoutData(data);
defaultReportActionText.setLayoutData(data);
结果如下所示:

要获得更精确的高度结果,可以使用:

data.heightHint = hostnameText.computeSize(SWT.DEFAULT, SWT.DEFAULT).y
                + instanceLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y
                + instanceText.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
GridData data = new GridData( SWT.FILL, SWT.FILL, true, false, 1, 3 );
data.heightHint = 80;

defaultActionText.setLayoutData(data);
defaultReportActionText.setLayoutData(data);
data.heightHint = hostnameText.computeSize(SWT.DEFAULT, SWT.DEFAULT).y
                + instanceLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).y
                + instanceText.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;