@DefaultProperty(value="children") public class Group extends Parent
Group
node contains an ObservableList of children that are rendered in order whenever this node is rendered.
A Group
will take on the collective(集体) bounds of its children and is not directly resizable(可调整大小).
Any transform, effect, or state applied to a Group
will be applied to all children of that group. Such transforms and effects will NOT be included in this Group's layout bounds(边界), however if transforms and effects are set directly on children of this Group, those will be included in this Group's layout bounds.(长度和宽度的计算,效果是使用在Group上的话,效果的长度和宽度是不计算的,但是应用在孩子上是要统计的)
package group;
import javafx.application.Application;
import javafx.geometry.Bounds;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class TestGroup2 extends Application{
@Override
public void start(Stage stage) throws Exception {
// TODO Auto-generated method stub
Group g = new Group();
Color[] c = new Color[]{Color.RED,Color.ANTIQUEWHITE,Color.AQUA,
Color.AQUAMARINE,Color.AZURE};
DropShadow ds = new DropShadow();
ds.setWidth(30);
for (int i = 0; i < 5; i++) {
Rectangle r = new Rectangle();
r.setY(i * 20);
r.setWidth(100);
r.setHeight(10);
r.setFill(c[i]);
// r.setEffect(ds);//很诡异的区别,如果特效应用在Group上,特效的长度宽度是不统计的,但是特效也会应用在孩子上
g.getChildren().add(r);
}
g.setEffect(ds);//特效会应用到所有的孩子上
stage.setScene(new Scene(g));
stage.show();
Bounds bounds = g.getLayoutBounds();
System.out.println(bounds.getHeight());//90 108
System.out.println(bounds.getWidth());//100 128
}
public static void main(String[] args) {
launch(args);
}
}
By default, a Group
will "auto-size" its managed resizable children to their preferred sizes during the layout pass to ensure that Regions and Controls are sized properly as their state changes. If an application needs to disable this auto-sizing behavior, then it should set autoSizeChildren
to false
and understand that if the preferred size of the children change, they will not automatically resize (so buyer beware(谨慎)!).
Group Example: