为什么swt(标签)组件的对齐被破坏?

时间:2017-10-25 09:17:35

标签: java swt rcp

这是一个RCP Eclipse APP, 你有一个对象的列表(名称,数量,图像),它是用FOR循环下载的。

下载此信息,对象的每个属性都显示在APP中,每个属性都有一个标签。

例如:

lblName[idx] = ComponentProvider.getLabel(composite, getObject().getName(), 8); 
lblName[idx].setBounds(5, pos, 195, 20);

lblValue[idx] = ComponentProvider.getLabel(composite, getObject().getValue(), 8); 
lblValue[idx].setBounds(205, pos, 73, 20);

lblStatus[idx] = ComponentProvider.getLabel(composite, "", 8);
lblStatus[idx].setBounds(280, pos, 39, 20);
 lblStatus[idx].setImage(StateIconManager.getImageForState(getObject().getImg()));

这将对齐这三个属性并显示:[名称] [数量] [图像]

这样可行,这里的问题是:在APP运行一段时间之后,它会像这样错位:

enter image description here

有些想法让标签保持一致?

1 个答案:

答案 0 :(得分:1)

您似乎对features( maven() .groupId("com.att.detsusl") .artifactId("usl-servicefactory-impl") .type("xml") .classifier("features").versionAsInProject(), "usl-all" ) 使用包含这些控件的GridLayout。您无法使用由布局管理的Composite中的setBounds。布局将使用它计算的边界覆盖边界。

由于您使用的是Composite,因此您应在每个控件上设置GridLayout版面数据。 GridData有许多字段可以让你控制cntrol的位置和大小。