Cyclic Gradient Paint : Gradient Paint « 2D Graphics « Java Tutorial

Cyclic Gradient Paint
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
class GradientPane extends JComponent {
  public void paint(Graphics g) {
    Graphics2D g2D = (Graphics2D) g;
    Point2D.Float p1 = new Point2D.Float(150.f, 75.f); // Gradient line start
    Point2D.Float p2 = new Point2D.Float(250.f, 75.f); // Gradient line end
    float width = 300;
    float height = 50;
    GradientPaint g1 = new GradientPaint(p1, Color.WHITE, p2, Color.DARK_GRAY, true); // Cyclic
                                                                                      // gradient
    Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100, p1.y - 25, width, height);
    g2D.setPaint(g1); // Gradient color fill
    g2D.fill(rect1); // Fill the rectangle
    g2D.setPaint(Color.BLACK); // Outline in black
    g2D.draw(rect1); // Fill the rectangle
    g2D.draw(new Line2D.Float(p1, p2));
public class CyclicGradientPaint {
  public static void main(String[] a) {
    JFrame window = new JFrame("Cyclic Gradient Paint");
    window.setBounds(30, 30, 300, 300);
    window.getContentPane().add(new GradientPane());

16.18.Gradient Paint
16.18.1.Gradients: a smooth blending of shades from light to dark or from one color to another
16.18.2.Control the direction of Gradients
16.18.3.Horizontal Gradients
16.18.4.Vertical Gradient Paint
16.18.5.Gradients in the middle
16.18.6.Cyclic Gradient PaintCyclic Gradient Paint
16.18.7.Acyclic Gradient PaintAcyclic Gradient Paint
16.18.8.String gradient paintString gradient paint
16.18.9.A non-cyclic gradient
16.18.10.Drawing with a Gradient Color