2D Graphics in Java
Graphics are visual images or designs on some surface, such as a wall, canvas, screen, paper, or stone to inform, illustrate, or entertain. It includes: pictorial representation of data, as in computer-aided design and manufacture, in typesetting and the graphic arts, and in educational and recreational software. Images that are generated by a computer are called computer graphics.
The Java 2D API is powerful and complex. There are multiple ways to do 2D graphics in Java.
Example 1: Draw and Fill a Rectangle Using Java
Section titled “Example 1: Draw and Fill a Rectangle Using Java”This is an Example which print rectangle and fill color in the rectangle.
https://i.stack.imgur.com/dlC5v.jpg

Most methods of the Graphics class can be divided into two basic groups:
- Draw and fill methods, enabling you to render basic shapes, text, and images
- Attributes setting methods, which affect how that drawing and filling appears
Code Example: Let us start this with a little example of drawing a rectangle and filling color in it. There we declare two classes, one class is MyPanel and other Class is Test. In class MyPanel we use drawRect( ) & fillRect( ) mathods to draw rectangle and fill Color in it. We set the color by setColor(Color.blue) method. In Second Class we Test our graphic which is Test Class we make a Frame and put MyPanel with p=new MyPanel() object in it.By running Test Class we see a Rectangle and a Blue Color Filled Rectangle.
First Class: MyPanel
import javax.swing.*;import java.awt.*;// MyPanel extends JPanel, which will eventually be placed in a JFramepublic class MyPanel extends JPanel { // custom painting is performed by the paintComponent method @Override public void paintComponent(Graphics g){ // clear the previous painting super.paintComponent(g); // cast Graphics to Graphics2D Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.red); // sets Graphics2D color // draw the rectangle g2.drawRect(0,0,100,100); // drawRect(x-position, y-position, width, height) g2.setColor(Color.blue); g2.fillRect(200,0,100,100); // fill new rectangle with color blue }}Second Class: Test
import javax.swing.;import java.awt.;public class Test { //the Class by which we display our rectangle JFrame f; MyPanel p; public Test(){ f = new JFrame(); // get the content area of Panel. Container c = f.getContentPane(); // set the LayoutManager c.setLayout(new BorderLayout()); p = new MyPanel(); // add MyPanel object into container c.add(p); // set the size of the JFrame f.setSize(400,400); // make the JFrame visible f.setVisible(true); // sets close behavior; EXIT_ON_CLOSE invokes System.exit(0) on closing the JFrame f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public static void main(String args[ ]){ Test t = new Test(); }}For More Explanation about Border Layout: https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
paintComponent( )
- It is a main method for painting
- By default, it first paints the background
- After that, it performs custom painting (drawing circle, rectangles etc.)
Graphic2D refers Graphic2D Class
Note: The Java 2D API enables you to easily perform the following tasks:
- Draw lines, rectangles and any other geometric shape.
- Fill those shapes with solid colors or gradients and textures.
Example 2: Drawing and Filling Oval
Section titled “Example 2: Drawing and Filling Oval”import javax.swing.*;import java.awt.*;
public class MyPanel extends JPanel { @Override public void paintComponent(Graphics g){ // clear the previous painting super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setColor(Color.blue); g2.drawOval(0, 0, 20,20); g2.fillOval(50,50,20,20); }}g2.drawOval(int x,int y,int height, int width);
This method will draw an oval at specified x and y position with given height and width.
g2.fillOval(int x,int y,int height, int width); This method will fill an oval at specified x and y position with given height and width.