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

Acyclic 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;
    Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100, p1.y - 25, width, height);
    GradientPaint g2 = new GradientPaint(p1, Color.WHITE, p2, Color.DARK_GRAY, false); // Acyclic
                                                                                        // gradient
    rect1.setRect(p1.x - 100, p1.y - 25, width, height);
    g2D.setPaint(g2); // 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 AcyclicGradientPaint {
  public static void main(String[] a) {
    JFrame window = new JFrame("Acyclic 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