java作废_Java Swing:repaint()与作废

小编典典

问题1:界面更改后应该使用哪个:重新绘制或无效?

如果由于调整大小,更改字体等原因导致布局不是最新的,则应调用invalidate。使组件无效,使该组件无效并且其上方的所有父项均标记为需要布置。在绘制之前,如果在验证步骤中未找到任何更改,则省略绘制步骤。

如果组件的某个部分正在更新(由图形的剪辑矩形定义,称为 “损坏”

区域),则应考虑调用repaint。可能发生损坏区域的原因之一是由于某些其他组件或应用程序而导致的一部分组件重叠。根据我的经验,如果在最里面的封闭组件上调用repaint()会更有效(即使用public

void repaint(int x, int y, int width, int height)而不是使用public void

repaint())。

Q2:什么时候应该调用它们?

Invalidate(): 将组件标记为无效-

表示其布局是否为“最新”:即调整了组件的大小,添加了边框,更改了字体等。您永远不需要调用invalidate(

),因为每次属性更改时,挥杆动作几乎都能为您带来帮助。

当控件中的多个区域需要重新绘制时,Invalidate将使整个窗口在一次通过中重新绘制,从而避免了由于冗余重新绘制而引起的闪烁。在实际重绘控件之前多次调用Invalidate不会对性能造成任何影响。

Repaint() :如果组件是轻量级组件,则此方法将导致尽快调用此组件的paint方法。否则,此方法将导致尽快调用此组件的update方法。

也有看Update方法。

注意: Swing处理“重绘”请求的方式与AWT稍有不同,尽管应用程序程序员的最终结果基本上是相同的-调用paint()。

有关在AWT和Swing中如何完成绘画的出色链接,请参见下面的链接:

希望这会有所帮助。

2020-09-21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值