0

这是JavaFX。

我有一个名为 tableView 的 TableView,其项目是一个名为 dataList 的非空 ObservableList。TableView 通过调用 tableView.setItems(dataList); 包含了 dataList;然后,我向 tableView.getItems() 添加了一个名为 listChangeListener 的 ListChangeListener。调用是 tableView.getItems().addListener(listChangeListener);

tableView.setItems(dataList);
tableView.getItems().addListener(listChangeListener);

现在,每当更改 dataList 时,我注意到 listChangeListener 不会被调用。但是tableView的内容变成了dataList的内容。为什么会这样?如何仅使用 tableView 或 tableView 本身的变量来检测更改?

笔记:

我不想调用 dataList.addListener(listChangeListener) 因为我希望能够调用 tableView.setItems(anotherDataList); 在某一点。

我也尝试使用 itemsProperty().addListener(aDifferentListener); 但是出现了另一个问题,其中监听器也没有被调用。

4

1 回答 1

1

我刚刚尝试了以下代码:

tableView.getItems().addListener(new ListChangeListener<String>() {

            @Override
            public void onChanged(
                    ListChangeListener.Change<? extends String> arg0) {
                System.out.println("Changed!!");

            }
        });

并且调用了更改侦听器...您可以发布您的代码以便我们看一下吗?

于 2013-09-26T11:18:57.987 回答