取消选中时删除hbox

时间:2017-01-13 22:25:01

标签: javafx radio-button root

我想用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);
                        }
                    });

1 个答案:

答案 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...
});