这是一个 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运行一段时间后,它像这样错位:
有什么想法可以使标签始终保持对齐吗?
最佳答案
您似乎正在将 GridLayout
用于包含这些控件的 Composite
。您不能在由布局管理的Composite
中使用setBounds
。布局将使用它计算的边界覆盖您的边界。
由于您使用的是 GridLayout
,因此您应该在每个控件上设置 GridData
布局数据。 GridData
有许多字段,可让您控制控件的位置和大小。
关于java - 为什么swt(Labels)组件的对齐方式被破坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928519/