我是Java / SWT的新手。我在使用SWT label时遇到了一些麻烦。
当我更新标签上的文字时,其尺寸未正确更新(标签被剪切,与原始尺寸相符)。但是,如果我在对话框中执行非常小的调整大小,则会正确更新大小。
基本上,我使用默认文本创建标签,然后,当我加载数据时,我使用真实文本更新标签,该标签比原始文本更大。
我试图在没有运气的情况下致电label.update()
和label.redraw()
。
答案 0 :(得分:12)
尝试致电parent.layout()
,其中parent
是包含您的标签的Composite
。另请参阅Understanding Layouts in SWT。
答案 1 :(得分:2)
我知道这是旧的,但为了不丢失可能在控件上设置的任何LayoutData设置。你应该致电getParent().requestLayout()
。该文档特别不鼓励getParent().layout()
的用户丢失控件上的所有缓存数据设置。
答案 2 :(得分:0)
不鼓励使用此方法,因为这是触发布局的最不高效的方法。使用layout(true)会丢弃所有缓存的布局信息,即使是未更改的控件也是如此。与在布局本身上调用此方法相比,在布局中已更改的每个控件上调用Control.requestLayout()效率要高得多。
基于getParent().layout()
的文档,您应该在控件本身上调用requestLayout()
,而不是@kingargyle所说的父控件。
我一直做的是label.requestLayout()
,它运行良好。