JavaFXTableView检测任何行的任何更改,包括添加新行

JavaFXTableView检测任何行的任何更改,包括添加新行,javafx,listener,tableview,Javafx,Listener,Tableview,因为我真的不知道解决方法。 假设我有一个TableView,它保存了关于产品的信息:描述、数量和价格。还有一个标签,显示表中所有产品的价格总和(乘以数量)。现在,我希望收到有关影响此组件的任何更改的通知,如现有行中的更改或新行的添加。是否有任何监听器或类似的东西来实现它?通常您通过向其传递一个可观察列表来构建一个TableView。大概是这样的: TableView myTable=新的TableView(myObservableList) observeList myObservableLis

因为我真的不知道解决方法。
假设我有一个TableView,它保存了关于产品的信息:描述、数量和价格。还有一个标签,显示表中所有产品的价格总和(乘以数量)。现在,我希望收到有关影响此组件的任何更改的通知,如现有行中的更改或新行的添加。是否有任何监听器或类似的东西来实现它?

通常您通过向其传递一个可观察列表来构建一个TableView。大概是这样的: TableView myTable=新的TableView(myObservableList)

observeList myObservableList=FXCollections.FXCollections.observablearlaylist(anynonobservableCollection);
TableView myTable=新的TableView(myObservableList);
您可以通过执行以下操作将ListChangeListener随意添加到任何ObservableList:

myObservableList.addListener(new ListChangeListener<ClassOfObjectsInTheList>(){

                @Override
                public void onChanged(javafx.collections.ListChangeListener.Change<? extends ClassOfObjectsInTheList> pChange) {
                    while(pChange.next()) {
                        // Do your changes here
                    }
                }
            });
myObservableList.addListener(新的ListChangeListener(){
@凌驾

public void onChanged(javafx.collections.ListChangeListener.Change
table.getItems().addListener(…)
?如果这是您正在搜索的内容,您是否介意投票确认答案正确,以便其他搜索帮助的人第一眼就能找到它?@omgBob:据我所知,这种方法不会对项目的内部更改做出反应。它只会在您添加和删除项目时做出反应。您有其他方法吗?@TrudleR:这取决于您试图监视的e项。您可以实现的任何子接口,并为每个项添加一个侦听器。这样,项的每一个更改都会被检测到,并且可以以您喜欢的任何方式进行处理。@omgBob是的,我发现您可以使用“提取器”来侦听其他属性,这些属性将触发一个调用“onChange”的事件也是项目列表的一部分。:)
myObservableList.addListener(new ListChangeListener<ClassOfObjectsInTheList>(){

                @Override
                public void onChanged(javafx.collections.ListChangeListener.Change<? extends ClassOfObjectsInTheList> pChange) {
                    while(pChange.next()) {
                        // Do your changes here
                    }
                }
            });