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

Java 为什么swt(标签)组件的对齐被破坏?,java,swt,rcp,Java,Swt,Rcp,这是一个RCP Eclipse应用程序, 您有一个对象名称、数量、图像的列表,它是通过FOR循环下载的 下载此信息,并在应用程序中显示对象的每个属性,每个属性都有一个标签 例如: lblName[idx] = ComponentProvider.getLabel(composite, getObject().getName(), 8); lblName[idx].setBounds(5, pos, 195, 20); lblValue[idx] = ComponentProvider.get

这是一个RCP Eclipse应用程序, 您有一个对象名称、数量、图像的列表,它是通过FOR循环下载的

下载此信息,并在应用程序中显示对象的每个属性,每个属性都有一个标签

例如:

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()));
这将对齐这三个属性并显示:[名称][数量][图像]

这是可行的,这里的问题是:在应用程序运行一段时间后,它像这样未对齐:

有什么想法可以让标签始终保持对齐?

您似乎正在为包含这些控件的组合使用网格布局。不能在由布局管理的组合中使用收边。布局将使用其计算的边界覆盖边界


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

从这些代码位不可能这么说。如果对话框/窗体/。。。正在使用SWT布局setBounds调用将被布局覆盖。这里可以做一些事情,使其不会再次溢出,但保持对齐?您没有向我们展示足够的代码来了解发生了什么。向我们显示正确的。每个第4帧合成图(标签将显示在其中)将接收:-合成图组=新合成图这是SWT.BORDER;-compGroup[0][1]=新的GetCompositegroup,SWT.BORDER,3,320,120;-public GetCompositeComposite父级,int样式,int numOfColumns,int宽度,int高度{superparent,style;this.setLayoutnew GridLayoutNumoColumns,false;this.setLayoutDatanew GridDatawidth,height;}lblName[idx]=ComponentProvider.getLabelcomposite,getObject.getName,8;lblName[idx].立根5,位置,195,20;然而,它们并不稳定。