Вы можете слушать change
в ObservableList
из Files
и для каждого нового дополнения добавить соответствующий ImageView
к VBox
.
Я создал пример, в котором у меня есть ObservableList
String, который является списком URL of images
. При нажатии кнопки я добавляю в список новый URL-адрес (тот же адрес). У меня есть ListChangeListener
, который слушает добавление строк и добавляет ImageView
к VBox
для этого.
Я слушаю Addition
. Вы можете добавить и для Removal
.
public class Main extends Application {
private final String IMAGE_PATH = "http://i.imgur.com/fcn1bFx.jpg";
private final ObservableList<String> listOfImages = FXCollections.observableArrayList();
@Override
public void start(Stage primaryStage) throws Exception {
ScrollPane pane = new ScrollPane();
VBox box = new VBox();
box.setSpacing(10);
box.setAlignment(Pos.CENTER);
Button button = new Button("Add");
button.setOnAction(e -> {
listOfImages.add(IMAGE_PATH);
});
listOfImages.addListener((ListChangeListener<String>) c -> {
c.next();
if (c.wasAdded()) {
box.getChildren().add(0, new ImageView(c.getAddedSubList().get(0)));
}
});
box.heightProperty().addListener((ov, oldValue, newValue) -> {
pane.setVvalue(pane.getVmax());
});
box.getChildren().add(button);
pane.setContent(box);
Scene scene = new Scene(pane, 500, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Это не двунаправленный связывания но заполнит ваши потребности.
Кроме того, вы также можете добавить слушателей в VBox
и внести соответствующие изменения в ObservableList
.
box.getChildren().addListener(new ListChangeListener<Node>() {
@Override
public void onChanged(Change<? extends Node> c) {
c.next();
if(c.wasRemoved()){
listOfImages.remove(c.getList().get(0));
}
}
});
Вы не можете выполнять привязку ContentBidirectional для ObservableList разных типов. – ItachiUchiha
Есть ли способ связать список пользовательского интерфейса и мой собственный список вместе? – Felix
Почему вы хотите это сделать? Может быть, если вы сообщите нам, чего вы пытаетесь достичь, может возникнуть альтернативный подход к нему. – ItachiUchiha