1+ /*********************************************************************************
2+ * (Display circles) Write a Java program that displays ovals, as shown in Figure *
3+ * 18.12b. The circles are centered in the pane. The gap between two adjacent *
4+ * circles is 10 pixels, and the gap between the border of the pane and the *
5+ * largest circle is also 10. *
6+ *********************************************************************************/
7+ import javafx .application .Application ;
8+ import javafx .stage .Stage ;
9+ import javafx .scene .Scene ;
10+ import javafx .scene .layout .StackPane ;
11+ import javafx .geometry .Insets ;
12+ import javafx .scene .shape .Circle ;
13+ import javafx .scene .paint .Color ;
14+
15+ public class Exercise_18_20 extends Application {
16+ protected static StackPane pane = new StackPane ();
17+
18+ @ Override // Override the start method in the Application class
19+ public void start (Stage primaryStage ) {
20+ int numberOfCircles = 16 ; // Number of ovals
21+ addCircles (numberOfCircles );
22+ pane .setPadding (new Insets (10 , 10 , 10 , 10 ));
23+
24+ // Create a scene and place it in the stage
25+ Scene scene = new Scene (pane );
26+ primaryStage .setTitle ("Exercise_18_20" ); // Set the stage title
27+ primaryStage .setScene (scene ); // Place the scene in the stage
28+ primaryStage .show (); // Display the stage
29+ }
30+
31+ /** Method adds n circles to pane recursively */
32+ public static void addCircles (int n ) {
33+ if (n > 0 ) {
34+ Circle circle = new Circle (10 * n );
35+ circle .setFill (Color .WHITE );
36+ circle .setStroke (Color .BLACK );
37+ pane .getChildren ().add (circle );
38+ addCircles (n - 1 ); // Recursive call
39+ }
40+ }
41+ }
0 commit comments