The Graphics
class allows you to draw onto java components such as a Jpanel
, it can be used to draw strings, lines, shapes and images. This is done by overriding the paintComponent(Graphics g)
method of the JComponent
you are drawing on using the Graphics
object received as argument to do the drawing:
Board
import java.awt.*;
import javax.swing.*;
public class Board extends JPanel{
public Board() {
setBackground(Color.WHITE);
}
@override
public Dimension getPreferredSize() {
return new Dimension(400, 400);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// draws a line diagonally across the screen
g.drawLine(0, 0, 400, 400);
// draws a rectangle around "hello there!"
g.drawRect(140, 180, 115, 25);
}
}
DrawingCanvas
import javax.swing.*;
public class DrawingCanvas extends JFrame {
public DrawingCanvas() {
Board board = new Board();
add(board); // adds the Board to our JFrame
pack(); // sets JFrame dimension to contain subcomponents
setResizable(false);
setTitle("Graphics Test");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLocationRelativeTo(null); // centers window on screen
}
public static void main(String[] args) {
DrawingCanvas canvas = new DrawingCanvas();
canvas.setVisible(true);
}
}
To draw shapes with different colors you must set the color of the Graphics
object before each draw call using setColor
:
g.setColor(Color.BLUE); // draws a blue square
g.fillRect(10, 110, 100, 100);
g.setColor(Color.RED); // draws a red circle
g.fillOval(10, 10, 100, 100);
g.setColor(Color.GREEN); // draws a green triangle
int[] xPoints = {0, 200, 100};
int[] yPoints = {100, 100, 280};
g.fillPolygon(xPoints, yPoints, 3);