为什么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 的位置和大小。
这是一个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 的位置和大小。