Java SWT标签大小未正确更新

Java SWT标签大小未正确更新,java,swt,Java,Swt,我是Java/SWT新手。我在使用电脑时遇到了一些问题 当我更新标签上的文本时,其大小未正确更新(根据原始大小剪切标签)。但是,如果在对话框中执行非常小的调整大小,则大小会正确更新 基本上,我用默认文本创建标签,然后,当我加载数据时,我用实际文本更新标签,这比原始文本大 我尝试调用label.update()和label.redraw(),但运气不好。尝试调用parent.layout(),其中parent是包含标签的组合。另请参见。我知道这是旧的,但为了不丢失控件上可能设置的任何LayoutD

我是Java/SWT新手。我在使用电脑时遇到了一些问题

当我更新标签上的文本时,其大小未正确更新(根据原始大小剪切标签)。但是,如果在对话框中执行非常小的调整大小,则大小会正确更新

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


我尝试调用
label.update()
label.redraw()
,但运气不好。

尝试调用
parent.layout()
,其中
parent
是包含标签的
组合。另请参见。

我知道这是旧的,但为了不丢失控件上可能设置的任何LayoutData设置。您应该调用
getParent().requestLayout()
。文档特别禁止用户使用
getParent().layout()
,因为它会丢失控件上的所有缓存数据设置

不鼓励使用此方法,因为它是触发布局的效率最低的方法。使用布局(true)将丢弃所有缓存的布局信息,即使来自未更改的控件。在布局中更改的每个控件上调用Control.requestLayout()比在布局本身上调用此方法要高效得多

根据
getParent().layout()
的文档,您应该调用控件本身的
requestLayout()
,而不是@kingargyle所说的它的父控件


我一直做的是
label.requestLayout()
,它工作得非常完美。

很可能是布局问题。您使用的是哪种布局?如果希望更改标签大小,则应调用布局重新计算。尝试调用
layoutInstance.layout(true)method。是否尝试在容器组件上使用
invalidate()/validate()
?谢谢,效果很好。我已经习惯了Winforms。我需要努力阅读swt。