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