Home Java Java-tips 45examples 30graphics 20face Java: Example - Drawing a Face

Ask Questions?

View Latest Questions


 
 

Java: Example - Drawing a Face
Posted on: April 17, 2011 at 12:00 AM
This simple application creates a graphic component to display a face. It uses a JPanel and overrides the paintComponent method to do the drawing

Java: Example - Drawing a Face

This simple application creates a graphic component to display a face. It uses a JPanel and overrides the paintComponent method to do the drawing.
  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
// Face.java - shows how to create a graphics component.
// Fred Swartz 1996 ... 2002-10-24

import java.awt.*;
import javax.swing.*;

////////////////////////////////////////////////////////////////// Face
public class Face {
    // =========================================================== main
    public static void main(String[] args) {
        JFrame windo = new FaceWindow();
        windo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        windo.setVisible(true);
    }//end main
}//end class Face

//////////////////////////////////////////////////////////// FaceWindow
class FaceWindow extends JFrame {
    // ==================================================== constructor
    FaceWindow() {
        Container content = this.getContentPane();  // get content pane
        content.setLayout(new BorderLayout());      // set its layout
        PacLady drawing = new PacLady();            // Create a PacLady
        content.add(drawing, BorderLayout.CENTER);  // center expands
        
        this.setTitle("Ms Paclady");
        this.pack();             // finalize window layout
    }//end constructor
}//endclass FaceWindow  
    
/////////////////////////////////////////////////////// class PacLady
    // This class extends JPanel and overrides paintComponent to
    // create a component for drawing - in this case a face.
class PacLady extends JPanel {
    // ================================================== constructor
    PacLady() {
        this.setBackground(Color.lightGray);
        this.setPreferredSize(new Dimension(400, 400));  // size
    }//end constructor
    
    //================================================ paintComponent
    public void paintComponent(Graphics g) {
        // This method is called to redraw window
        super.paintComponent(g);  // MUST be first line      
        //--- Draw the head with open mouth and 8 pixel border
        g.setColor(Color.pink);
        g.fillArc(8, 8, 384, 384, 30, 300);       
        //--- Draw the eye
        g.setColor(Color.magenta);
        g.fillOval(230, 72, 60, 60);
    }//end paintComponent
}//endclass PacLady

Possible exensions

  1. When the window is resized, the PacLady JPanel will also be resized. The drawing should be changed. Use
        int w = this.getWidth();
        int h = this.getHeight();
    near the beginning of paintComponent to find the width and height of the panel. Use these values so that the face expands and contracts more appropriately.
  2. Add a button that changes the expression when it is clicked. For example, it could change the face from happy to sad and vice versa.
Copyleft 2003 Fred Swartz MIT License, Last update: 2003-10-29

Related Tags for Java: Example - Drawing a Face: