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 |
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.