禁用按钮取决于JavaFX中另一个节点的子代数量

时间:2019-05-24 14:14:43

标签: javafx binding

我需要根据某些子元素的数量禁用按钮。

我尝试了类似的方法,这是不对的:

HBox userDataHBox = new HBox(new Label("1"), new Label("2"), new Label("3"));
Button btn = new Button();
btn.disableProperty().bind(
  Bindings.notEqual(userDataHBox.getChildren().size(), 3)
);

2 个答案:

答案 0 :(得分:6)

userDataHBox.getChildren().size()

just产生列表的当前大小。没什么可观察的。您可以使用Bindings.size来获得IntegerBinding的可用大小:

btn.disableProperty().bind(
    Bindings.size(userDataHBox.getChildren()).isNotEqualTo(3));

答案 1 :(得分:4)

您在这里:

btn.disableProperty().bind(
  Bindings.createBooleanBinding(()-> userDataHBox.getChildren().size() != 3, userDataHBox.getChildren())
);