【发布时间】:2025-11-25 05:05:02
【问题描述】:
我正在尝试将基于 Android 的应用程序重写为 JavaFX,但遇到了一个问题。
问题的简要说明如下:
1) 我有根abstract class Field 的类层次结构和FieldCat、FieldZebra、FieldDog 等子类的数量-这些类中的每一个都有自己独特的足够结构和视觉表示(以 FXML 的形式)
2) ListView 应该显示属于 Field 层次结构的对象列表 - 存储在 ObservableList<Field> listItems
3) 现在我需要将我的每个 FieldWhatever 对象膨胀为 ListView 中的单独行
声明
我无法使用 JavaFX ListView control(?!)
证明
创建ListView 元素的唯一方法是提供CellFactory:
public class FieldsListCellFactory<T extends Field> implements Callback<ListView<T>, ListCell<T>> {
@Override
public ListCell<T> call(ListView<T> listView) {
//blah-blah
}
}
Factory 本身接收单个参数ListView,因此它可以为ListView 的所有元素生成相同的ListCell - 换句话说,我无法根据底层FieldWhatever 对象填充不同的UI 元素。
一开始我都不敢相信——这怎么可能?在 Android 中,我可以根据对象类型/层次结构等夸大任何类型的复杂 UI,但在 JavaFX 中 - 不可能?相信我 - 我花了好几个小时试图修复它 - 没用。
问题
- 我是对的吗(我很高兴听到我错了)
- 做什么?如何解决情况并放入/放置/充气 完全不同的对象/类/实体的列表/表格列表?
【问题讨论】:
标签: java swing listview javafx factory