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

标签 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

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

最佳答案

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

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

关于java - 为什么swt(Labels)组件的对齐方式被破坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928519/

相关文章:

java - 为 SWT 树和表编写通用代码

java - Eclipse RCP : How to manage user access permissions to resources?

java - 使用 Socket 发送到 Apache Camel Mina2

java - SWT 使用 ContentProposalAdapter 显示 HTML

java - 拖放 SWT TableColumn 标题?

Eclipse 标记 View ID

java - ViewPart 中的 onShow 和 onHide 监听器 - Java Eclipse RCP

java - MongoDB 相当于 WHERE IN(1,2,...)

java - 使用 Java 11 和 Spring Boot 调用 java.net.http.HttpClient 的响应不可靠

java - Java中的按位运算子串