我是Java / SWT的新手。我正在使用SWT label遇到一些麻烦。
当我更新标签上的文本时,其大小未正确更新(标签被剪切,尊重原始大小)。但是,如果我在对话框中执行非常小的调整大小,则会正确更新大小。
基本上,我使用默认文本创建标签,然后,当我加载数据时,我使用真实文本更新标签,该标签比原始文本更大。
我试着没有运气就打电话给label.update()
和label.redraw()
。
尝试调用parent.layout()
,其中parent
是包含您的标签的Composite
。另见Understanding Layouts in SWT。
我知道这是旧的,但为了不丢失可能在控件上设置的任何LayoutData设置。你应该打电话给getParent().requestLayout()
。该文档特别不鼓励getParent().layout()
的用户丢失控件上的所有缓存数据设置。
不鼓励使用此方法,因为它是触发布局的最低效方法。布局(true)的使用会丢弃所有缓存的布局信息,即使是未更改的控件也是如此。在布局中更改的每个控件上调用Control.requestLayout()比在布局本身上调用此方法更有效。
根据getParent().layout()
的文档,你应该调用控件本身的requestLayout()
,而不是@kingargyle所说的父母。
我一直做的是label.requestLayout()
,它完美无缺。