java 复选框是否选择,在java中查找4个复选框的有序选择

如果您想将复选框状态读取为4位二进制数,则有16种可能。

如果选择全部4个

CheckBox

考虑到选择的顺序,你得到

4! = 24

可能性。如果允许任意数量的

复选框

是的,如果你选择了3个

复选框

ES和另外12个用于选择2个

复选框

ES和4个以上用于选择1个

复选框

总结到

65 = 24 + 24 + 12 + 4 + 1

是的。

保存选择顺序的最简单解决方案是存储

复选框

List

是的。

下面的示例将打印解释为二进制数的选定内容,并打印选定内容的顺序。

@Override

public void start(Stage primaryStage) throws IllegalAccessException {

VBox container = new VBox();

final List selectionOrder = new ArrayList<>();

final int checkBoxCount = 4;

for (int i = 0; i < checkBoxCount; i++) {

final CheckBox cb = new CheckBox();

cb.setUserData(i);

cb.selectedProperty().addListener((o, oldValue, newValue) -> {

if (newValue) {

selectionOrder.add(cb);

} else {

selectionOrder.remove(cb);

}

});

container.getChildren().add(cb);

}

Button btn = new Button("print");

btn.setOnAction(evt -> {

System.out.println(selectionOrder.stream().map(c -> c.getUserData().toString()).collect(Collectors.joining(", ", "{ ", " }")));

// print binary

int value = 0;

for (CheckBox cb : selectionOrder) {

value |= (1 << ((Integer) cb.getUserData()));

}

System.out.println(value);

});

container.getChildren().add(btn);

Scene scene = new Scene(container);

primaryStage.setScene(scene);

primaryStage.show();

}

如果您实际上不需要选择的顺序,我建议删除列表

selected

属性,而不是设置

userData

而是存储

复选框

A中的ES

CheckBox[] array

这样你就可以

int value = 0;

for (int i = 0; i < array.length; i++) {

if (array[i].isSelected()) {

value |= (1 << i);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值