Java SWT:重绘、重新设计、更新和 requestLayout(和 pack)之间的区别

问题描述 投票:0回答:1

有人可以向我解释一下方法

Control.redraw()
Control.update()
Widget.reskin()
Control.requestLayout()
Control.pack()
的区别吗? 不幸的是,API 文档并没有详细说明这些差异。

我猜想如下:

Control.requestLayout()
表示当 Composite 中控件的内容(如标签或文本字段中的文本)发生更改且其显示的大小/位置不再合适时,计算该控件的大小和位置。 我想我理解
Control.pack()
:它只是
Control.requestLayout
的一部分,或者更确切地说是
Composite.layout()
,因为只有控件的大小会改变,但位置不会改变。

Control.redraw()
Control.update()
:在我看来,这两种方法都只是再次绘制控件,然后当操作系统不再正确显示控件时调用它们。如果大小和位置未更改,则调用这些方法。两种方法之间的区别在于
update()
立即重新绘制控件,而
redraw()
可以在一段时间后重新绘制控件。

我不明白什么时候需要打电话

Widget.reskin()
。我觉得和
Control.redraw()
一样。

java layout controls swt drawing
1个回答
0
投票

redraw
请求下次事件循环运行时重绘控件。

update
请求立即重绘控件 - 在绘制诸如跟踪鼠标拖动的“橡皮筋”之类的东西时使用。

reskin
用于 Eclipse RCP CSS 支持,它不是您通常会调用的东西。

requestLayout
只是请求尽快调用
layout
方法。这可能比直接调用
layout
更快。

pack
相当于:

setSize(computeSize(SWT.DEFAULT, SWT.DEFAULT, changed));

它只是将控件设置为计算出的大小。

© www.soinside.com 2019 - 2024. All rights reserved.