Java SWT标签大小未正确更新
我是Java/SWT新手。我在使用电脑时遇到了一些问题 当我更新标签上的文本时,其大小未正确更新(根据原始大小剪切标签)。但是,如果在对话框中执行非常小的调整大小,则大小会正确更新 基本上,我用默认文本创建标签,然后,当我加载数据时,我用实际文本更新标签,这比原始文本大Java SWT标签大小未正确更新,java,swt,Java,Swt,我是Java/SWT新手。我在使用电脑时遇到了一些问题 当我更新标签上的文本时,其大小未正确更新(根据原始大小剪切标签)。但是,如果在对话框中执行非常小的调整大小,则大小会正确更新 基本上,我用默认文本创建标签,然后,当我加载数据时,我用实际文本更新标签,这比原始文本大 我尝试调用label.update()和label.redraw(),但运气不好。尝试调用parent.layout(),其中parent是包含标签的组合。另请参见。我知道这是旧的,但为了不丢失控件上可能设置的任何LayoutD
我尝试调用
label.update()
和label.redraw()
,但运气不好。尝试调用parent.layout()
,其中parent
是包含标签的组合。另请参见。我知道这是旧的,但为了不丢失控件上可能设置的任何LayoutData设置。您应该调用getParent().requestLayout()
。文档特别禁止用户使用getParent().layout()
,因为它会丢失控件上的所有缓存数据设置
不鼓励使用此方法,因为它是触发布局的效率最低的方法。使用布局(true)将丢弃所有缓存的布局信息,即使来自未更改的控件。在布局中更改的每个控件上调用Control.requestLayout()比在布局本身上调用此方法要高效得多
根据getParent().layout()
的文档,您应该调用控件本身的requestLayout()
,而不是@kingargyle所说的它的父控件
我一直做的是label.requestLayout()
,它工作得非常完美。很可能是布局问题。您使用的是哪种布局?如果希望更改标签大小,则应调用布局重新计算。尝试调用layoutInstance.layout(true)将新文本设置为标签后,使用code>method。是否尝试在容器组件上使用invalidate()/validate()
?谢谢,效果很好。我已经习惯了Winforms。我需要努力阅读swt。