目录
题目:*18.20 (显示多个圆)
编写一个Java程序显示多个圆,如图18-12b所示。这些圆都处于面板的中心位置。两个相邻圆之间相距10像素,面板和最大圆之间也相距10像素。
-
习题思路
- 定义一个面板StackPane,
- 定义一个绘制圆的方法
- (绘制方法内部)新建一个圆。
- (绘制方法内部)判断面板的宽度减去圆的直径是否大于等于20,如果是则将圆添加到面板中,并将下一个圆半径增加10,递归调用绘制方法。
-
代码示例
编程练习题18_20DisplayMultipleCircles.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;
@Override
public 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);
}
}
-
输出结果