提问人:Johannes1984 提问时间:11/11/2023 更新时间:11/11/2023 访问量:29
Java SWT:redraw、reskin、update 和 requestLayout(和 pack)之间的区别
Java SWT: Difference between redraw, reskin, update and requestLayout (and pack)
问:
谁能向我解释一下方法、、、和的区别吗?
不幸的是,API 文档并没有说明太多的差异。Control.redraw()
Control.update()
Widget.reskin()
Control.requestLayout()
Control.pack()
我猜如下:
Control.requestLayout()
表示当控件的内容(如标签或文本字段中的文本)发生更改并且其显示的大小/位置不再合适时,计算控件在复合中的大小和位置。
我想我明白了:这只是一部分,或者更确切地说,因为只会改变控件的大小,而不会改变位置。Control.pack()
Control.requestLayout
Composite.layout()
Control.redraw()
和 :在我看来,这两种方法都只是再次绘制控件,并在操作系统不再正确显示时调用它们。如果大小和位置未更改,则调用这些方法。这两种方法之间的区别在于立即重新绘制控件,而可以在一段时间后重新绘制控件。Control.update()
update()
redraw()
我不明白什么时候需要打电话。在我看来,这与.Widget.reskin()
Control.redraw()
答:
redraw
请求在下次运行事件循环时重新绘制控件。大多数情况下,重绘是自动管理的,显式调用很少见 - 通常,如果您正在编写自己的控件扩展。redraw
Canvas
update
请求立即重新绘制控件 - 在绘制跟踪鼠标拖动的“橡皮筋”等内容时使用。
reskin
用于 Eclipse RCP CSS 支持,它不是您通常所说的。
requestLayout
只是请求尽快调用该方法。这可能比直接呼叫更快。layout
layout
pack
相当于:
setSize(computeSize(SWT.DEFAULT, SWT.DEFAULT, changed));
它只是将控件设置为计算的大小。
Eclipse SWT 站点也有很多示例和文章。
评论
TableViewer
评论