1.5. Where Do I Get a Graphics2D?
Shapes, text, and images are all ultimately drawn by a Graphics2D object. But where does the Graphics2D come from? As usual, there's more than one way to do it.
1.5.1. Drawing on Components
Every Component that AWT shows on the screen has a paint() method. The system passes a Graphics to this method. In JDK 1.1 and earlier, you could draw on Components by overriding the paint() method and using the Graphics to draw things.
It works exactly the same way in Java 2, except that it's a Graphics2D that is passed to paint(). To take advantage of all the spiffy 2D features, you'll have to perform a cast in your paint() method, like this:
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
// Now we can do cool 2D stuff.
}
Note that your component may not necessarily be drawn on the screen. The Graphics2D that gets passed to paint() might actually represent a printer or any other output device.
Swing components work almost the same way. Strictly speaking, however, you should implement the paintComponent() method instead of paint(). Swing uses the paint() method to draw child components. Swing's implementation of paint() calls paintComponent() to draw the component itself. You may be able to get away with implementing paint() instead of paintComponent(), but then don't be surprised if the component is not drawn correctly.
1.5.2. Drawing on Images
You can use a Graphics or Graphics2D to draw on images, as well. If you have an Image that ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access