Lesson13 AnchorPane布局类

AnchorPane //锚点布局,也称为 绝对布局,定位布局

AnchorPane 可以管理该布局类上的所有孩子,不能管理孙子类

当ap去设置b1的位置的时候,b1自己设置的位置就不管用了

    Button b1 = new Button("button1");
    Button b2 = new Button("button2");
    AnchorPane ap = new AnchorPane();
    ap.setTopAnchor(b1,10.0);//当ap去设置b1的位置的时候,b1自己设置的位置就不管用了
    ap.setLeftAnchor(b1,10.0);
    b1.setLayoutX(100);//该设置无效,优先级原因
    b1.setLayoutY(100);//该设置无效,优先级原因

设置ap的内边距的时候,b1需要做如下调整

    Button b1 = new Button("button1");
    Button b2 = new Button("button2");
    AnchorPane ap = new AnchorPane();
    ap.setPadding(new Insets(10.0));//设置内边距10PX

    Button b1 = new Button("button1");
    Button b2 = new Button("button2");
    AnchorPane ap = new AnchorPane();
    ap.setPadding(new Insets(10.0));//设置内边距10PX

    ap.setTopAnchor(b1,00.0);//一定要设置这个,哪怕设置为0,才能看到上面内边距的效果
    ap.setLeftAnchor(b1,00.0);
    //ap.setRightAnchor(b1,10.0);
    //ap.setBottomAnchor(b1,10.0);
    b1.setLayoutX(100);//该设置无效,优先级原因
    b1.setLayoutY(100);//该设置无效,优先级原因

设置ap布局类背景的子背景为自身宽高的一半,采用监听机制,并把代码放在.show()之后

    AnchorPane ap = new AnchorPane();
    ap.setStyle("-fx-background-color: #ff3e96");
    AnchorPane ap2 = new AnchorPane();
    ap2.setStyle("-fx-background-color: #0000FF");
    ap.getChildren().add(ap2);//ap2相当于是ap的子组件
    Scene scene = new Scene(ap);
    primaryStage.setScene(scene);
    primaryStage.setTitle("lesson13");
    primaryStage.setWidth(800);
    primaryStage.setHeight(800);
    primaryStage.show();

    ap.setTopAnchor(ap2,0.0);
    ap.setBottomAnchor(ap2,ap.getHeight()/2);
    ap.setLeftAnchor(ap2,0.0);
    ap.setRightAnchor(ap2,ap.getWidth()/2);

    primaryStage.widthProperty().addListener(new ChangeListener() {//监听窗口的宽
        @Override
        public void changed(ObservableValue observable, Number oldValue, Number newValue) {
            ap.setBottomAnchor(ap2,ap.getHeight()/2);
        }
    });
    primaryStage.heightProperty().addListener(new ChangeListener() {//监听窗口的高
        @Override
        public void changed(ObservableValue observable, Number oldValue, Number newValue) {
            ap.setRightAnchor(ap2,ap.getWidth()/2);
        }
    });

}

内框占外框的一半并锁定b1按钮的位置

内框占外框的一半并锁定b1按钮的位置
    Button b1 = new Button("b1");
    Button b2 = new Button("b2");
    Button b3 = new Button("b3");
    Button b4 = new Button("b4");
    //设置ap布局类背景的子背景为自身宽高的一半,采用监听机制,并把代码放在.show()之后
    AnchorPane ap = new AnchorPane();
    ap.setStyle("-fx-background-color: #ff3e96");
    AnchorPane ap2 = new AnchorPane();
    ap2.setStyle("-fx-background-color: #0000FF");
    ap.getChildren().add(ap2);//ap2相当于是ap的子组件
    //给ap2添加一个按钮b1,相当于ap2是b1的爹,ap是ap2的爹
    ap2.getChildren().add(b1);
    //设置ap2距离b1的内边距
    ap2.setRightAnchor(b1,0.0);
    ap2.setBottomAnchor(b1,0.0);

    Scene scene = new Scene(ap);
    primaryStage.setScene(scene);
    primaryStage.setTitle("lesson13");
    primaryStage.setWidth(800);
    primaryStage.setHeight(800);
    primaryStage.show();

    ap.setTopAnchor(ap2,0.0);
    ap.setBottomAnchor(ap2,ap.getHeight()/2);
    ap.setLeftAnchor(ap2,0.0);
    ap.setRightAnchor(ap2,ap.getWidth()/2);

    primaryStage.widthProperty().addListener(new ChangeListener() {//监听窗口的宽
        @Override
        public void changed(ObservableValue observable, Number oldValue, Number newValue) {
            ap.setBottomAnchor(ap2,ap.getHeight()/2);
        }
    });
    primaryStage.heightProperty().addListener(new ChangeListener() {//监听窗口的高
        @Override
        public void changed(ObservableValue observable, Number oldValue, Number newValue) {
            ap.setRightAnchor(ap2,ap.getWidth()/2);
        }
    });

设置 让父类不再管理自己的几种方法

    b1.setManaged(false);//设为false代表 让父类不再管理自己,并且在位置上消失
    b1.setVisible(true);//代表 让父类看不见自己,并且还在在位置上
    b1.setOpacity(1);//设置按钮的透明度

你可能感兴趣的:(Lesson13 AnchorPane布局类)