I made a java paint application and I made a rainbow brush function; however, I want to make the randomized colors into a smooth gradient. It is currently just printing ovals of differently colors and you can notice each distinct oval. Is there a way to make it a gradient?
Paint Project - CLICK HERE TO SEE PROGRAM
My Rainbow Fuction:
public void rainbow() {
    Random generator = new Random();
    int r = generator.nextInt(256);
    int g = generator.nextInt(256);
    int b = generator.nextInt(256);
    Color color = new Color(r, g, b);
    g2.setPaint(color);
}
My Mouse Listeners:
public DrawArea() {
    addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
            // save coord x,y when mouse is pressed
            oldX = e.getX();
            oldY = e.getY();
        }
    });
    addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent e) {
            // coord x,y when drag mouse
            currentX = e.getX();
            currentY = e.getY();
            if (g2 != null) {
            // draw oval if g2 context not null
            g2.drawOval(oldX, oldY, 40, 40);
            g2.fillOval(oldX, oldY, 40, 40);
            // refresh draw area to repaint
            repaint();
            // store current coords x,y as olds x,y
            oldX = currentX;
            oldY = currentY;
            }
        }
    });
}
Paint Component:
public void paintComponent(Graphics g) {
    if (image == null) {
        image = createImage(getSize().width, getSize().height);
        g2 = (Graphics2D) image.getGraphics();
        clear();
    }
    // enable antialiasing
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,      RenderingHints.VALUE_ANTIALIAS_ON);
    g.drawImage(image, 0, 0, null); 
}
 
    