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