我正在尝试处理 ListView
在 JavaFX 中。
@FXML
ListView<? extending Animals> listView;
我想连续分配listView
项目至ObservableLists
扩展类 Animals
.
listView.setItems(new ObservableList<Dogs>);
listView.setItems(new ObservableList<Cats>); //error
listView.setItems(new ObservableList<Horses>); //error
当然,我知道我不能这样做以及为什么,但是由于 ObservableLists 处理刷新 ListView
,我真的很想使用 ObservableLists<Dogs>
, ObservableList<Cats>
, ObservableList<Horses>
而不是使用ObservableList<Animals>
并转换我的 Dogs
, Cats
,和Horses
列表至Animals
列表。我还需要Dogs
我的 Dogs
中的属性列表,因此存储 Dogs
在 Animals
列表不是一个选项。
我想知道是否有办法做到这一点,如果没有,绕过它的最有效方法是什么。
最佳答案
你可以做到
@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>
等),并根据需要将它们切换到 UI 中或从 UI 中切换出来。
关于java - 实例化后,列表可以以某种方式分配给另一个类的列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48363609/