在Eclipse向导中包装文本

时间:2014-11-17 08:28:28

标签: java eclipse wizard word-wrap eclipse-plugin

Eclipse向导根据向导最大页面的大小计算其窗口的大小。这就是为什么我在制作Label以在WizardPage中包装它的文本时遇到困难的原因。我使用以下代码片段创建一个包装标签:

@Override
public void createControl(Composite parent)
{
    initializeDialogUnits(parent);
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setFont(parent.getFont());
    composite.setLayout(initGridLayout(new GridLayout(3, false), true));
    composite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));

    Label l = new Label(composite, SWT.WRAP);
    l.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut"
                    + "labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo"
                    + "duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum"
                    + "dolor sit amet.");
    l.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false, 3, 1));

    // create other components

    setControl(composite);
}

当向导显示时,它会尝试将整个文本放在单行中,并且其窗口占用所需的位置。我想你可以想象它的外观。如果我手动将窗口大小调整为原始大小,即如果没有标签,则会获得所需的结果。实现这一目标是否有良好的做法?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在widthHint实例上设置GridData属性。这不是一个完美的解决方案,但也许它会有所帮助:

Label l = new Label(composite, SWT.WRAP);
l.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut"
                + "labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo"
                + "duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum"
                + "dolor sit amet.");
GridData gd = new GridData(SWT.FILL, SWT.NONE, true, false, 3, 1);
l.setLayoutData(gd);

如果您不将widthHint属性设置为静态值,我想出的唯一方法是覆盖setVisible的{​​{1}}方法。如果这样做,则需要将标签实例作为成员变量保留在类中。

DialogPage

希望有所帮助。