无法使用提取器实例化ObservableList问题咨询
JavaFX 用提取器实现列表项属性变更监听
我最近在做JavaFX项目时,需要用自定义对象FermentableInRecipe来填充TableView——既要响应列表本身的增删操作,还要监听列表中每个对象的属性变更,所以决定用ObservableList的**提取器(Extractor)**来实现这个需求。
ObservableList 的声明与实例化
下面是我写的ObservableList声明和实例化代码:
private ObservableList<FermentableInRecipe> fermentablesInRecipe = FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()} );
自定义类 FermentableInRecipe 相关片段
对应的自定义类代码片段如下:
public class FermentableInRecipe { // 这里定义了需要监听的重量属性 private final DoubleProperty weight = new SimpleDoubleProperty(); public DoubleProperty WeightProperty() { return weight; } // 其他属性、getter/setter及业务方法... }
这个实现的核心逻辑很清晰:通过提取器,我告诉ObservableList要监听每个FermentableInRecipe实例的WeightProperty(),当这个属性的值发生变化时,ObservableList会自动触发更新通知,TableView就能实时刷新对应的行数据;同时列表本身的增删操作也会被默认监听,完全满足动态列表的更新需求。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

