目录
题目:*18.20 (显示多个圆)
习题思路
代码示例
输出结果
题目:*18.20 (显示多个圆)
编写一个Java程序显示多个圆,如图18-12b所示。这些圆都处于面板的中心位置。两个相邻圆之间相距10像素,面板和最大圆之间也相距10像素。
-
习题思路
- 定义一个面板StackPane,
- 定义一个绘制圆的方法
- 新建一个圆。
- 判断面板的宽度减去圆的直径是否大于等于20,如果是则将圆添加到面板中,并将半径增加10,递归调用绘制方法。
-
代码示例
编程练习题18_20DisplayMultipleCircles.java
java">package chapter_18;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;public class 编程练习题18_20DisplayMultipleCircles extends Application{private static int radius = 5;private static int spacing = 10;@Overridepublic void start(Stage primaryStage) throws Exception {StackPane stackPane = new StackPane();Scene scene = new Scene(stackPane,500,500);drawCircle(stackPane);//drawCirlcey方法的调用需要在Scene定义长宽度之后primaryStage.setTitle("编程练习题18_20DisplayMultipleCircles");primaryStage.setScene(scene);primaryStage.show();}public void drawCircle(StackPane stackPane) {Circle circle = new Circle(radius);if(stackPane.getWidth()-circle.getRadius()*2 >= 20) {circle.setFill(Color.TRANSPARENT);circle.setStroke(Color.BLACK);stackPane.getChildren().add(circle);radius += spacing;drawCircle(stackPane);}}public static void main(String[] args) {Application.launch(args);}
}
-
输出结果