2016-01-09 19 views
2

从活动窗体添加或删除组件似乎并不会自动触发重绘。应该添加或删除组件触发重绘?

删除组件时,已删除组件的图像只是挂起。

将新组件添加到现有窗体时,setVisible(true) 不会触发重新绘制。

回答

2

它不应该。

我们允许像animateLayout这样的东西,如果我们隐约地重新绘制,就会看到闪烁的效果。另外,如果删除很多组件或添加很多组件,则希望将其组合成单个重新绘制,而不是使用任务超载系统。

+0

我还没有看过animateLayout,我会把它放到我的2do列表中,但是如果我没有使用它,离开窗口图像显然是不正确的,更糟糕​​的是不会暴露新窗口的图像。也许animateLayout应该被集成并且与setVisible结合在一起。 “重新绘制”的合同很快就会重新绘制,而不是立即重新绘制,因此添加/移除多个项目不应该成为问题。 – ddyer

+0

这已经在那里。重新绘制不会立即重新绘制。然而,你为帮助添加的每一点逻辑都意味着CPU需要工作......这在桌面级CPU中可能不是什么大问题,但它在移动CPU中是一笔巨大的交易。事实上,您可以动态地动态化所有内容(这也可以节省CPU使用量),这对移动设备非常重要。试试这个,而不是'revalidate()'来应用布局,只需使用'animateLayout(500)'......飞快移动。 –