SWT标签大小未正确更新

3

我是Java/SWT的新手。在使用SWT标签时遇到了一些问题。

当我更新标签上的文本时,它的大小没有正确地更新(标签被截断,保留原始大小)。但是,如果我在对话框中进行非常小的调整,则大小会正确更新。

基本上,我使用默认文本创建标签,然后在加载数据时使用实际文本更新标签,该文本比原始文本更大。

我尝试调用label.update()label.redraw()都没有成功。


很可能是布局的问题。你使用了哪种布局?如果你期望标签大小发生变化,应该调用布局重新计算。在设置新文本到标签后,尝试调用 layoutInstance.layout(true); 方法。 - Sorceror
你尝试在容器组件上使用 invalidate()/validate() 了吗? - ring bearer
3个回答

12

谢谢,完美地解决了问题。我平时使用Winforms,现在需要花点时间去了解一下SWT。 - Daniel Peñalba

2

我知道这篇文章有些旧了,但是为了不丢失任何可能在控件上设置的LayoutData设置,你应该调用getParent().requestLayout()。文档明确反对使用getParent().layout(),因为它会丢失控件上缓存的所有Data设置。


1
使用此方法不被鼓励,因为这是触发布局的效率最低的方式。使用layout(true)会丢弃所有缓存的布局信息,即使是那些没有更改的控件也会被丢弃。与在布局上调用此方法相比,对每个已更改的控件调用Control.requestLayout()的效率要高得多。
根据getParent().layout()的文档,应该像@kingargyle说的那样在控件本身而不是其父控件上调用requestLayout()。
我总是使用label.requestLayout(),它完美地解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接