Just a small nitpick that might save you troubles in the future:
Whenever you use a Graphics object or anything that extends it, you should always dispose of it when you are through via .dispose().
The reason being is how Java deals with memory. Graphics objects require large ammounts of contiguous memory- much larger than any usual amount. Although the garbage collector should free this memory, it does so in a fickle manner. Firstly, it may or may not clear the memory when the method is removed from the system stack. Secondly, unless the graphics object is explicitly flagged for removal via dispose(), then the garbage collector can (and will) skip over removing it. This only makes the garbage collector run slower the next time it decides to run, since it's basically doing work it should have done the last time it passed through. You also can't force it to clean up this memory using System.gc() only dispose() will work.
This 'bug' (it's acutally a feature- though only for specific scenarios.. for the rest of us, it's annoying) can cause even more problems in Java 1.5+ since now, Java2D can use the OpenGL pipeline. This basically puts all Graphics objecs into video memory and uses your graphics card. Since graphics cards have less memory than the computer itself, it's imperative that it gets cleared at the earliest and most convenient moment.
|