Source of YellowFace.java


  1: import javafx.application.Application;
  2: import javafx.scene.canvas.Canvas;
  3: import javafx.scene.Scene;
  4: import javafx.scene.Group;
  5: import javafx.stage.Stage;
  6: import javafx.scene.canvas.GraphicsContext;
  7: import javafx.scene.shape.ArcType;
  8: import javafx.scene.paint.Color;
  9: 
 10: public class YellowFace extends Application
 11: {
 12:    public static final int WINDOW_WIDTH = 400;
 13:    public static final int WINDOW_HEIGHT = 300;
 14: 
 15:    public static final int FACE_DIAMETER = 200;
 16:    public static final int X_FACE = 100;
 17:    public static final int Y_FACE = 50;
 18: 
 19:    public static final int EYE_WIDTH = 10;
 20:    public static final int EYE_HEIGHT = 20;
 21:    public static final int X_RIGHT_EYE = 155;
 22:    public static final int Y_RIGHT_EYE = 100;
 23:    public static final int X_LEFT_EYE = 230;
 24:    public static final int Y_LEFT_EYE = Y_RIGHT_EYE;
 25: 
 26:    public static final int NOSE_DIAMETER = 10;
 27:    public static final int X_NOSE = 195; // Center of nose at 200
 28:    public static final int Y_NOSE = 135;
 29: 
 30:    public static final int MOUTH_WIDTH = 100;
 31:    public static final int MOUTH_HEIGHT = 50;
 32:    public static final int X_MOUTH = 150;
 33:    public static final int Y_MOUTH = 160;
 34:    public static final int MOUTH_START_ANGLE = 180;
 35:    public static final int MOUTH_DEGREES_SHOWN = 180;
 36: 
 37:    public static void main(String[] args)
 38:    {
 39:       launch(args);
 40:    }
 41: 
 42:    @Override
 43:    public void start(Stage primaryStage) throws Exception
 44:    {
 45:     Group root = new Group();
 46:            Scene scene = new Scene(root);
 47: 
 48:     Canvas canvas = new Canvas(WINDOW_WIDTH, WINDOW_HEIGHT);
 49:     GraphicsContext gc = canvas.getGraphicsContext2D();
 50:     // Draw face interior in yellow and outline in black
 51:     gc.setFill(Color.YELLOW);
 52:     gc.fillOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);
 53:     gc.setFill(Color.BLACK);
 54:     gc.strokeOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);
 55:     // Draw eyes
 56:     gc.setFill(Color.BLUE);
 57:         gc.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);
 58:         gc.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);
 59:         // Draw nose
 60:         gc.setFill(Color.BLACK);
 61:         gc.fillOval(X_NOSE, Y_NOSE, NOSE_DIAMETER, NOSE_DIAMETER);
 62: 
 63:         // Draw mouth
 64:         gc.setFill(Color.RED);
 65:         gc.strokeArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,
 66:                      MOUTH_START_ANGLE, MOUTH_DEGREES_SHOWN, ArcType.OPEN);
 67: 
 68:     root.getChildren().add(canvas);
 69:     primaryStage.setTitle("HappyFace in JavaFX");
 70:     primaryStage.setScene(scene);
 71:     primaryStage.show();
 72:    }
 73: }