我是一个初学者,喜欢JavaFX。在我的程序中,选中一个复选框后,我希望它与ChoiceBox一起显示标签。但是,当未选中它时,我希望它们都消失。我不确定如何执行此操作。
这是我的代码:
String [] options = new String [] {"A", "B", "C", "D", "E", "F"};
CheckBox [] cbs = new CheckBox[options.length];
for (int i = 0; i < options.length; i++){
final CheckBox cb = cbs[i] = new CheckBox(options[i]);
cb.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if(observable.getValue() == true){
ChoiceBox<Integer> choice = new ChoiceBox<>();
Label label = new Label("How many of the selected accounts do you have?");
choice.getItems().addAll(1, 2, 3, 4, 5);
choice.setValue(1);
selection.setAlignment(Pos.BOTTOM_LEFT);
selection.getChildren().addAll(label, choice);
gp.add(selection, 0, 8);
} else if (observable.getValue() == false){
// remove above block if getValue() == false;
}
}
});
}
答案 0 :(得分:0)
您需要保留对节点的引用。您可以通过在匿名ChangeListener
中添加字段或在循环体中添加(有效)最终局部变量来实现此目的。
我不确定selection
是什么,但是将同一节点用于多个复选框似乎是个坏主意。
以下示例仅添加/删除包含VBox
和Label
的{{1}}。由于这会更改布局,因此我建议禁用节点,或者更改可见性,而不是添加/删除节点。
ChoiceBox