You should not dispose of the Graphics
object unless your code creates the Graphics
object.
The paint()
method of JComponent
will create a Graphics
object and pass it to the three painting methods of each component.
See: A Closer Look at the Painting Mechanisn.
The paint()
method will then dispose()
of this temporary Graphics
object when painting of the component is finished. Check out the code at: https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/javax/swing/JComponent.java
If you manually create a Graphics object then you should dispose it:
Graphics2D g2d = (Graphics2D)g.create();
// do custom painting
g2d.dispose();
Typically it is a good idea to create a copy of the passed Graphics object if you intend to alter the painting by adding an AffineTransform, for example, to the Graphics.