Я создаю приложение JavaFX, в котором у меня есть GridPane из 10 ярлыков, и пользователь может назначать объекты этим ярлыкам для перетаскивания.Я использовал свойство userdata узлов, поэтому, когда пользователь перетаскивает объект на одну метку, он устанавливает этот объект как userdata этой метки.
Теперь я хочу установить привязку для disableProperty кнопки, поэтомукнопка активируется только тогда, когда пользователь «заполнил» все эти метки данными.Я перепробовал несколько вещей, наконец, я пришел к чему-то вроде этого:
FilteredList<Node> emptySlots = gridPane.getChildren().filtered(node -> node.getUserData() == null);
SimpleListProperty<Node> listProperty = new SimpleListProperty<>(emptySlots);
BooleanProperty hasEmptySlots = new SimpleBooleanProperty();
hasEmptySlots.bind(not(listProperty.emptyProperty()));
button.disableProperty().bind(hasEmptySlots);
Но, к сожалению, список emptySlots, похоже, не обновляется при изменении свойства меток userdata.Я уже пытался найти способы обновить этот список, но я нахожу только те способы, которые включают ObservableLists с собственными классами и пользовательскими настройками, когда список создается следующим образом ( отсюда ):
ObservableList<Model> masterData = FXCollections.observableArrayList<>(model ->
new Observable[]{model.statusProperty()});
Но у меня нет такой возможности.
Кто-нибудь знает, как это заархивировать?