【笔记】javafx_RadioButton和CheckBox

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

import java.awt.*;
import java.util.Iterator;
import java.util.function.Consumer;

public class Main extends Application {
    
    
    public static void main(String[] args) {
    
    
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
    
    
        AnchorPane an = new AnchorPane();
        an.setStyle("-fx-background-color:#fffff0");

        //单选按钮
        RadioButton r1 = new RadioButton("选项1");
        RadioButton r2 = new RadioButton("选项2");
        RadioButton r3 = new RadioButton("选项3");
        RadioButton r4 = new RadioButton("选项4");

        //多选按钮
        CheckBox c1 = new CheckBox("多选1");
        CheckBox c2 = new CheckBox("多选2");
        CheckBox c3 = new CheckBox("多选3");
        CheckBox c4 = new CheckBox("多选4");
        c2.setIndeterminate(true);//不确定状态
        c3.setAllowIndeterminate(true);//允许不确定状态

        //按钮组
        ToggleGroup tg = new ToggleGroup();
        tg.getToggles().addAll(r1,r2,r3,r4);

        //默认选中
//        r2.setSelected(true);
//        tg.selectToggle(r3);

        HBox hBox = new HBox(10);
        hBox.getChildren().addAll(r1,r2,r3,r4);
        hBox.setStyle("-fx-background-color:#63B8FF");

        HBox hBox2 = new HBox(10);
        hBox2.getChildren().addAll(c1,c2,c3,c4);
        hBox2.setStyle("-fx-background-color:#63B8FF");


        //单选监听
        r1.selectedProperty().addListener(new ChangeListener<Boolean>() {
    
    
            @Override
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
    
    
                System.out.println("r1被选择 = " + r1.isSelected());
            }
        });
        tg.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
    
    
            @Override
            public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) {
    
    
                RadioButton r = (RadioButton)newValue;
                System.out.println("tg.selectedToggleProperty = " + r.getText());
            }
        });

        //多选监听
        c1.selectedProperty().addListener(new ChangeListener<Boolean>() {
    
    
            @Override
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
    
    
                System.out.println("c1状态 = " + newValue);
            }
        });
        //监听所有多选选项状态
        an.setOnMouseClicked(new EventHandler<MouseEvent>() {
    
    
            @Override
            public void handle(MouseEvent event) {
    
    
                //输出c1,c2,c3,c4状态

                //循环
//                Object[] obj = hBox2.getChildren().toArray();
//                for(Object o : obj){
    
    
//                    CheckBox c = (CheckBox)o;
//                    System.out.println(c.getText() + "的状态 = " + c.isSelected() +
//                        "  不确定状态是 = " + c.isIndeterminate());
//                }
//                System.out.println();

                //循环
//                for (Node node : hBox2.getChildren()) {
    
    
//                    CheckBox c = (CheckBox) node;
//                    System.out.println(c.getText() + "的状态 = " + c.isSelected() +
//                        "  不确定状态是 = " + c.isIndeterminate());
//                }
//                System.out.println();

                //迭代器
//                Iterator<Node> it = hBox2.getChildren().iterator();
//                while(it.hasNext()){
    
    
//                    CheckBox c = (CheckBox) it.next();
//                    System.out.println(c.getText() + "的状态 = " + c.isSelected() +
//                            "  不确定状态是 = " + c.isIndeterminate());
//                }
//                System.out.println();

                //foreach
//                hBox2.getChildren().forEach(new Consumer<Node>() {
    
    
//                    @Override
//                    public void accept(Node t) {
    
    
//                        CheckBox c = (CheckBox) t;
//                        System.out.println(c.getText() + "的状态 = " + c.isSelected() +
//                                "  不确定状态是 = " + c.isIndeterminate());
//                    }
//                });
//                System.out.println();

//                hBox2.getChildren().stream().sorted()

                //lambda表达式
//                hBox2.getChildren().forEach(item  ->{
    
    
//                    CheckBox c = (CheckBox) item;
//                        System.out.println(c.getText() + "的状态 = " + c.isSelected() +
//                                "  不确定状态是 = " + c.isIndeterminate());
//                });

                //lambda表达式
                hBox2.getChildren().forEach(item -> System.out.println( ((CheckBox) item).getText() + "的状态 = " + ((CheckBox) item).isSelected() +
                        "  不确定状态是 = " + ((CheckBox) item).isIndeterminate()) );
            }
        });

        an.getChildren().addAll(hBox,hBox2);
        AnchorPane.setTopAnchor(hBox,100.0);
        AnchorPane.setLeftAnchor(hBox,100.0);
        AnchorPane.setTopAnchor(hBox2,130.0);
        AnchorPane.setLeftAnchor(hBox2,100.0);

        Scene scene = new Scene(an);
        primaryStage.setScene(scene);
        primaryStage.setWidth(700);
        primaryStage.setHeight(700);
        primaryStage.show();
    }
}

在这里插入图片描述
在这里插入图片描述
https://www.bilibili.com/video/BV1ut411f7pg

猜你喜欢

转载自blog.csdn.net/qq_43750882/article/details/110288252