public class YellowFace extends Application
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: }