Итак, я работаю над небольшим проектом ночной школы, и мы «манипулируем» одним существующим кругом.Нажав кнопку 4 (btn4), мне нужно добавить несколько (число не важно) концентрических кругов в StackPane.Я добавил их в список и пытался заставить его работать, но я просто не могу.Все работает, кроме этой кнопки.
В действии btn4: попытался поместить весь код с помощью цикла for, foreach, но метод add () не принимает там setFill, поэтому я поместил в список все, что находится за пределами setOnAction()
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
HBox hb1 = new HBox(20);
hb1.setAlignment(Pos.CENTER);
hb1.setStyle("-fx-background-color:darkgrey;");
Button btn1 = new Button("+");
Button btn2 = new Button("-");
Button btn3 = new Button("Change color");
Button btn4 = new Button("Add concentric circles");
hb1.getChildren().addAll(btn1, btn2, btn3, btn4);
StackPane sp = new StackPane();
sp.setStyle("-fx-background-color:lightblue;");
Circle circle = new Circle(75);
circle.setFill(RED);
sp.getChildren().add(circle);
BorderPane bp = new BorderPane();
bp.setBottom(hb1);
bp.setCenter(sp);
btn1.setOnAction(e -> {
circle.setRadius(circle.getRadius() + 10);
});
btn2.setOnAction(e -> {
circle.setRadius(circle.getRadius() - 10);
});
btn3.setOnAction(e -> {
circle.setFill(Color.color(Math.random(), Math.random(), Math.random(), 1));
});
ArrayList <Circle> moreCircles = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
new Circle(circle.getRadius() - (i * 5)).setFill(Color.color(Math.random(), Math.random(), Math.random(), 1));
}
btn4.setOnAction(e -> {
for(Circle c : moreCircles) {
sp.getChildren().add(c);
}
});
Scene scene = new Scene(bp, 500, 350);
primaryStage.setTitle("Game with circles");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Я хочу сделать эти новые концентрические круги немного меньшими по сравнению с существующими.Чтобы добавить их все сразу, и я хочу, чтобы они были видны, я добавил несколько цветов.
Спасибо @anthony yaghi за решение этой небольшой проблемы для меня
Действие кнопки необходимоПохоже, и Array выше для некоторого удаления:
btn4.setOnAction(e -> {
for (int i = 1; i <= 10; i++) {
sp.getChildren().add(new Circle(circle.getRadius() - (i*5), Color.color(Math.random(), Math.random(), Math.random(), 1)));
}
});