使用TableView.getItems()观察ObservableList?

时间:2013-09-26 05:06:42

标签: java javafx-2 javafx

这是JavaFX。

我有一个名为tableView的TableView,其项目是一个名为dataList的非空ObservableList。 TableView通过调用tableView.setItems(dataList)包含dataList; 然后,我将一个ListChangeListener添加到名为listChangeListener的tableView.getItems()中。调用是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);但是出现了另一个问题,其中听众也没有被调用。

1 个答案:

答案 0 :(得分:1)

我刚刚尝试了以下代码:

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

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

            }
        });

变革听众被称为...... 您可以发布您的代码,以便我们可以查看它吗?