如何在Label中包装文本而不指定元素的高度

时间:2015-12-14 08:35:12

标签: eclipse-rap

问题是我无法设置Label的高度。对于长文本,我的Label应该有2行高度,短文本只有1行。 有代码示例:

public MyComposite(Composite parent) {
    super(parent, SWT.NONE);
    setLayout(new GridLayout(1, false));

    description = new Label(this, SWT.WRAP);
    description.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    description.setText("Looooooooooooooooooooooooooooooooooooooo" + 
    "oooooooooooooooooooooooooooooooooooooooooooooooooooooo" + 
    "ooooooooooooooooooooooooooooooooooooong text");
}

1 个答案:

答案 0 :(得分:2)

要在GridLayout中启用换行文本,必须将GridData的第3个参数(grabExcessHorizontalSpace)设置为true。还要确保父组合的大小由其layoutData定义,否则它将由Label扩展。以下代码段包含标签文字:

Shell shell = new Shell( parentShell );
shell.setSize( 400, 300 );
shell.setLayout( new GridLayout(1, false) );
Label description = new Label(shell, SWT.WRAP);
description.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
description.setText("Looooooooooooooooooooooooooooooooooooooo" +
    "oooooooooooooooooooooooooooooooooooooooooooooooooooooo" +
    "ooooooooooooooooooooooooooooooooooooong text");
shell.open();

另请注意,换行是以自动换行的方式实现的,非常长的非空白字符序列不会被分割成行。