2014-01-14 88 views
3

因为我不知道溶剂。 可以说我有一个TableView,它包含有关产品的信息:描述,数量和价格。还有一个标签,显示表格中所有产品的价格总和(倍数)。现在,我希望收到关于对此组件产生影响的任何更改的通知,例如对现有行进行更改或添加新组件。有没有听众或类似的实现它?javafx tableview检测任何行上的任何更改,包括添加新的行

+2

'table.getItems()的addListener(...)'? – assylias

回答

9

通常你通过向它传递一个ObservableList构造一个TableView。像这样: TableView myTable = new TableView <>(myObservableList);

ObservableList<ClassOfTheObjectsInTheList> myObservableList = FXCollections.FXCollections.observableArrayList(anyNoneObservableCollection); 
TableView<ClassOfTheObjectsInTheList> myTable = new 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 
        } 
       } 
      }); 
+0

如果这是你正在寻找的东西,你会不介意投票答案是正确的,以便其他人寻找帮助乍一看吗? – omgBob

+0

@omgBob:据我所知,这种方法不会对项目的内部变化做出反应。只有在您添加和删除项目时才会有所反应。你有另外一种方法吗? – codepleb

+0

@TrudleR:这取决于您试图监控的项目。您可以实现https://docs.oracle.com/javase/8/javafx/api/javafx/beans/value/ObservableValue.html的任何子接口,并为每个项目添加一个监听器。通过这种方式,每一项物品的变化都会被检测到,并且可以以任何您想要的方式进行处理。 – omgBob

相关问题