我想用3个单选按钮(comm,med,all)创建菜单。例如,Comm按钮应该创建hbox,但是当选择了另一个选项时,这个hbox应该消失,但它不会。
有人能让我走向正确的方向吗? 非常感谢。
继承人所得到的:
comm.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
if(comm.isSelected())
root.add(commBox, 0,1);
else if(med.isSelected()||all.isSelected())
root.getChildren().remove(commBox);
}
});
答案 0 :(得分:2)
在该按钮上执行操作时,将调用单选按钮的onAction
处理程序。当选择同一切换组中的一个其他按钮时,将取消选择单选按钮。因此,当取消选择按钮时,不会调用您的处理程序。
使用selectedProperty
注册一个监听器:
comm.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
root.add(commBox, 0,1);
} else {
root.getChildren().remove(commBox);
}
});
或者,您可以使用切换组注册一个监听器:
// assuming the following existing code, or its equivalent:
ToggleGroup toggleGroup = new ToggleGroup();
comm.setToggleGroup(toggleGroup);
med.setToggleGroup(toggleGroup);
all.setToggleGroup(toggleGroup);
// then this will work:
toggleGroup.selectedToggleProperty().addListener((obs, oldToggle, newToggle) -> {
if (newToggle == comm) {
root.add(commBox, 0, 1);
} else {
root.getChildren().remove(commBox);
}
// maybe more logic here to handle med or all selected...
});