为什么swt(Labels)组件的对齐被破坏了?

Why is the alignment of the swt (Labels) component destroyed?

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

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

例如:

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 后,它像这样错位:

让标签始终保持对齐的想法?

您似乎正在为包含这些控件的 Composite 使用 GridLayout。您不能 在由布局管理的 Composite 中使用 setBounds。布局将使用它计算的边界覆盖您的边界。

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