I'm trying to understand when to use revalidate/repaint/pack.
Surprisingly I haven't found much detailed under-the-hood documentation (feel free to link).
So far I have understood that this is all the responsibility of the RepaintManager.
- paint/repaint refer to what sees as dirty/clean
- pack/validate/revalidate refer to what is valid
This article on Oracle explains that calling a repaint enqueues a job on the Event Dispatcher Thread that will in turn call paintImmediately() on the component (this redraws the component).
This trail indicates that to be or not to be valid is associated with the LayoutManager. And that this is all about the size of the component rather than the content.
- Is it true that you should call revalidate when you move/resize your component and repaint when you change it's contents?
- Is the pack() method really a deprecated thing that you should never call?
- Are any of the above claims wrong?