- If your program is a Swing program, then you should not override paint but rather
paintComponent(...)
of a JComponent derived class. - You can limit the location of the repainted area by calling
repaint(Rectangle r)
, with the Rectangle's bounds being that of the area that you want changed. - You should not get a Graphics context by calling
getGraphics()
on a component as this will give you a short-lived Graphics object only, and anything drawn with it will be lost in a repaint. - If many of your images don't change, if they act as a background, consider drawing them to one background BufferedImage, and then drawing that one in your
paintComponent(...)
method.
For more help, consider creating and posting a minimal, compilable, runnable example program.
Edit
Regarding your new post:
I'm drawing many bufferedImage's onto a JFrame using the paint() method
No, never draw directly into the JFrame as you lose many of the benefits of Swing graphics including double buffering, and risk messing up the drawing of borders and child components. You will want to read the Swing custom painting tutorial to learn more on how to draw correctly.