package Main;
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import java.util.Objects;
public class Main extends Application
{
public static void main(String[] args)
{
launch(args);
}
public void start(Stage primaryStage) throws Exception
{
Button b1 =new Button("B1");
Button b2 =new Button("B2");
Button b3 =new Button("B3");
Group group =new Group();
group.getChildren().addAll(b1,b2,b3);//添加所有的
group.contains(0,0);//检测坐标(0,0)处是否有组件(子节点左上角的坐标)返回的是布尔值
System.out.println(group.contains(1,0));//检测该
group.setOpacity(0.5);//group包括子组件设置透明度
// group设置的东西会影响子组件
// group.setAutoSizeChildren(false); //关闭预设
// group.getChildren().remove(b1); //删除group中的组件b1
//设置初始位置
b1.setLayoutX(0);
b1.setLayoutY(0);
//设置宽高
b1.setPrefWidth(50);
b1.setPrefHeight(50);
b2.setLayoutX(100);
b2.setLayoutY(0);
b3.setLayoutX(200);
b3.setLayoutY(0);
Object[] lbj =group.getChildren().toArray();//获取group中的组件变成数组
for(Object l:lbj)//数组循环
{
Button BU= (Button)l;//转换类型 (没懂为什么要转类型好像是一样的)
//System.out.println(l.getClass().getName());
//System.out.println(BU.getClass().getName());
BU.setPrefHeight(100);//
BU.setPrefWidth(100);
}
// foreach数组遍历(局限性不能改变数组中的值)
//for(类型 变量名:集合) {
// 语句块;
//}
b1.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event)
{
Button b4 =new Button("B4");
group.getChildren().add(b4);
}
});//给b1一个点击事件
group.getChildren().addListener(new ListChangeListener<Node>() {
public void onChanged(Change<? extends Node> c)
{
System.out.println("当前子组件数量="+c.getList().size());
}
});//监听子组件的改变事件
Scene scene = new Scene(group);
primaryStage.setScene(scene);
primaryStage.setTitle("javafx Group");
primaryStage.setHeight(800);
primaryStage.setWidth(800);
primaryStage.show();
}
}
运行结果
额外知识点 foreach 数组遍历
Object[] lbj =group.getChildren().toArray();//获取group中的组件变成数组
for(Object l:lbj)//数组循环
{
Button BU= (Button)l;//转换类型 (没懂为什么要转类型好像是一样的)
//System.out.println(l.getClass().getName());
//System.out.println(BU.getClass().getName());
BU.setPrefHeight(100);//
BU.setPrefWidth(100);
}
// foreach数组遍历(局限性不能改变数组中的值)
//for(类型 变量名:集合) {
// 语句块;
//}