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