AbstractPainter cache management
I would like to suggest that the AbstractPainter keep it's BufferedImage that it has already created if the cache.height and cache.width still match the height and width passed into the 'paint(...)' method.
While doing some profiling of my application, I noticed that an awful lot of time was spent in the 'GraphicsUtilities.createCompatibleTranslucentImage(width, height)' method. I was able to eliminate this extra time by keeping the image (even when the cache was cleared... needed a 'cacheCleared' flag).
I have been testing this, and it is working well.
Again, I have an updated version of the AbstractPainter class that has all of the necessary changes. If this seems like a good idea (I think it is), I will supply all of these changes. Not sure what the best way to do that is.