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 |
// File: face/file2/PacLadyApplication.java
// Author: Fred Swartz, Date: July 1998 ... Oct 2004
import java.awt.*;
import javax.swing.*;
///////////////////////////////////////////////// class PacLadyApplication
public class PacLadyApplication {
public static void main(String[] args) {
Face aFace = new Face();
JFrame window = new JFrame("Face"); // Create a new window.
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setContentPane(aFace); // Put drawing in window.
window.pack(); // Adjust to fit panel.
window.setVisible(true); // Show the window.
int eyeSize = getInt("How big should the eye be?");
aFace.setEyeDiameter(eyeSize);
}
static int getInt(String message) {
String s = JOptionPane.showInputDialog(null, message);
return Integer.parseInt(s);
}
}
|
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 |
// File: face/file2/Face.java
// Author: Fred Swartz, Date: July 1998 ... Oct 2004
import java.awt.*;
import javax.swing.*;
//////////////////////////////////////////////////////////////// class Face
class Face extends JPanel {
//... Instance (member) variables that define the "state" of the face.
int m_mouthAngle = 60; // Number of degrees open the mouth is.
int m_eyeDiameter = 20; // Size of the eye.
int m_headDiameter = 200; // Size of the head.
/** Constructor sets background color and initial size. */
public Face() {
this.setPreferredSize(new Dimension(300, 300));
this.setBackground(Color.GRAY);
}
/** Set the size of the eye. */
public void setEyeDiameter(int size) {
m_eyeDiameter = size;
this.repaint(); // Call repaint after changes.
}
/** Override paintComponent to draw a face */
public void paintComponent(Graphics g) {
super.paintComponent(g); // Required as first line.
//... Get panel width and height, Compute center.
int w = this.getWidth();
int h = this.getHeight();
int centerX = w / 2; // x-coordinate of the center.
int centerY = h / 2; // y-coordinate of the center.
//... Draw vertical lines in the background.
g.setColor(Color.LIGHT_GRAY);
for (int x=0; x < w; x += 10) {
g.drawLine(x, 0, x, h);
}
//... Draw everything except the mouth in pink
g.setColor(Color.PINK);
g.fillArc(centerX - m_headDiameter / 2, centerY - m_headDiameter / 2
, m_headDiameter, m_headDiameter
, m_mouthAngle / 2, 360 - m_mouthAngle);
//... Draw an eye
g.setColor(Color.MAGENTA);
g.fillOval(centerX + 20, centerY - 60, m_eyeDiameter, m_eyeDiameter);
}
}
|