2014-01-14 69 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

相關問題