Если вы поместите все прямоугольники в общий Group
, вы можете повернуть их сразу:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class RotateAllApplication extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root = new BorderPane();
// the common group
Group group = new Group();
group.getChildren().addAll(new Rectangle(10, 10, 80, 40), //
new Rectangle(110, 10, 80, 40), //
new Rectangle(10, 110, 80, 40), //
new Rectangle(110, 110, 80, 40));
// rotate the group instead of each rectangle
group.setRotate(45.0);
root.setCenter(group);
primaryStage.setScene(new Scene(root, 600, 400));
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Обновить : если вы не хотите создавать родителя Group
объект, вы можете применить одно и то же преобразование вращения к каждому дочернему элементу.Хотя Node#setRotate(double)
всегда вращается вокруг центра узла, добавление преобразования к Node#getTransforms()
носит более общий характер и не ограничивается простыми вращениями.
Следующее утверждение будет применять вращение вокруг точки (100.0/100.0)
изродительская система координат для всех дочерних элементов в списке:
childrenList.forEach(child -> child.getTransforms().add(Transform.rotate(45.0, 100.0, 100.0)));