我正在尝试在JavaFX中处理ListView
。
@FXML
ListView<? extending Animals> listView;
我希望继续将listView
项分配给ObservableLists
的{{1}}个类。
Animals
当然,我知道我不能这样做以及为什么,但由于ObservableLists处理刷新 listView.setItems(new ObservableList<Dogs>);
listView.setItems(new ObservableList<Cats>); //error
listView.setItems(new ObservableList<Horses>); //error
,我真的想使用ListView
,ObservableLists<Dogs>
, ObservableList<Cats>
而非使用ObservableList<Horses>
并将我的ObservableList<Animals>
,Dogs
和Cats
列表转换为Horses
列表。此外,我在Animals
列表中需要Dogs
的属性,因此无法在Dogs
列表中存储Dogs
。
我想知道是否还有这样做,如果没有,那么绕过它的最有效方法是什么。
答案 0 :(得分:1)
你可以做到
@FXML
private ListView<Animal> listView ;
然后
ObservableList<Dog> dogs = FXCollections.observableArrayList(...);
listView.getItems().setAll(dogs);
或
ObservableList<Cat> cats = FXCollections.observableArrayList(...);
listView.getItems().setAll(cats);
这可能适用也可能不适用,但是您从ListView
检索项目(如果您需要这样做的话)。您还可以考虑创建多个ListView
s(ListView<Dog>
,ListView<Cat>
等),并根据需要将其切换进出用户界面。