javafx tableview 检测任何行的任何更改,包括添加新行
Posted
技术标签:
【中文标题】javafx tableview 检测任何行的任何更改,包括添加新行【英文标题】:javafx tableview detect any change upon any of rows including addition of new one 【发布时间】:2014-02-02 12:18:07 【问题描述】:因为我真的不知道解决方案。 假设我有一个包含产品信息的 TableView:描述、数量和价格。还有一个标签,显示表格中所有产品的价格总和(乘以数量)。现在,我希望收到有关对该组件产生影响的任何更改的通知,例如现有行的更改或添加新行。是否有任何听众或类似的东西来实现它?
【问题讨论】:
table.getItems().addListener(...)
?
【参考方案1】:
通常你通过传递一个 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
);
【讨论】:
如果这是您要搜索的内容,您是否介意将答案投票为正确,以便其他寻求帮助的人一眼就能找到它? @omgBob:据我所知,这种方法不会对项目的内部变化做出反应。它仅在您添加和删除项目时才会做出反应。你有其他方法吗? @TrudleR:这取决于您要监控的项目。您可以实现docs.oracle.com/javase/8/javafx/api/javafx/beans/value/… 的任何子接口,并为每个项目添加一个侦听器。这样,项目的每一次更改都会被检测到,并且可以按照您想要的任何方式进行处理。 @omgBob 是的,我发现您可以使用“Extractors”来监听其他属性,这也会触发一个调用 itemList 的“onChange”的事件。 :)以上是关于javafx tableview 检测任何行的任何更改,包括添加新行的主要内容,如果未能解决你的问题,请参考以下文章