- Don't override paint();
- Don't invoke repaint() in any painting method.
- Don't use the getGraphics() method, you already have the Graphics object
- Custom painting is done in the paintComponent() method and don't forget to invoke
super.paintComponent(...)
Double buffering is automatically inherited from the parent component.