invalidate()将容器标记为无效。表示内容某种程度上是错误的,必须重新布置。但这只是一种标记/标志。以后可能必须刷新多个无效的容器。
validate()执行中继。这意味着要求无效的内容的所有大小,并且所有子组件的大小都由LayoutManager设置为适当的值。
revalidate()只是两者的总和。它将容器标记为无效并执行容器的布局。
更新:
Component.java的一些代码
public void revalidate() { revalidateSynchronously();}final void revalidateSynchronously() { synchronized (getTreeLock()) { invalidate(); Container root = getContainer(); if (root == null) { // There's no parents. Just validate itself. validate(); } else { while (!root.isValidateRoot()) { if (root.getContainer() == null) { // If there's no validate roots, we'll validate the // topmost container break; } root = root.getContainer(); } root.validate(); } }}


