Ask Questions?

View Latest Questions

Advertisement


 
 

Drawing a Face v2
Posted on: July 22, 2006 at 12:00 AM
This simple application creates a graphic component to display a face.

Java: Example - Drawing a Face v2

This simple application creates a graphic component to display a face. It subclasses 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 
/** Face.java - Example app with graphics component.
  @author Fred Swartz 
  @version 1996 ... 2002-10-24
*/

import javax.swing.*;

////////////////////////////////////////////////////////////////// Face
public class Face {
    // =========================================================== main
    public static void main(String[] args) {
        JFrame window = new FaceWindow();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
    }//end main
}//end class Face
  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
/** FaceWindow.java - Window (JFrame) containing only one component.
  @author Fred Swartz 
  @version 1996 ... 2002-10-24
*/

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

//////////////////////////////////////////////////////////// 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 
  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 
/** PacLady.java - Graphical component extending JPanel.
  @author Fred Swartz 
  @version 1996 ... 2002-10-24
*/

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

///////////////////////////////////////////////////////// class PacLady
    // This class extends JPanel and overrides paintComponent to
    // create a component for drawing - in this case a face.
public 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
Advertisement


DMCA.com