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.