O'Reilly logo

Ivor Horton's Beginning Java™ 2, JDK™ 5th Edition by Ivor Horton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

19.4. Shapes

Classes that define geometric shapes are contained in the java.awt.geom package, but the Shape interface that these classes implement is defined in java.awt. Objects that represent shapes are often passed around as references of type Shape, so you'll usually need to import class names from both packages into your source file. Any class that implements the Shape interface defines a shape, and visually a shape will be some composite of straight lines and curves. Straight lines, rectangles, ellipses, and curves are all shapes.

A graphics context knows how to draw objects of a type that implements the Shape interface. To draw a shape on a component, you just need to pass the object defining the shape to the draw() method for the Graphics2D object for the component. To explore this in detail, I'll split the shapes into three groups: straight lines and rectangles, arcs and ellipses, and freeform curves. First, though, you must take a look at how points are defined.

19.4.1. Classes Defining Points

Two classes in the java.awt.geom package define points, Point2D.Float and Point2D.Double. From the class names you can see that these are both inner classes to the Point2D class, which also happens to be an abstract base class for both classes too. The Point2D.Float class defines a point from a pair of (x, y) coordinates of type float, whereas the Point2D.Double class defines a point as a coordinate pair of type double. The Point class in the java.awt package also defines a point, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required