维护可观察列表的副本

时间:2015-11-26 07:42:04

标签: javafx observablelist

我试图在表格视图上创建撤消重做功能。为此,我尝试制作一个可观察列表(表格视图数据)的副本,并将其保留为原始列表以供进一步参考。

    ObservableList<T> tableData = FXCollections.ObservableArrayList();
    table.setItems(tableData);
    ObservableList<T> originalList = FXCollections.observableArrayList(tableData);

    lblUndo.setOnMouseClicked((evt) -> {
            System.out.println("undo click == " + (originalList==data));
            System.out.println("undo click equals " + originalList.equals(data));
            table.setItems(originalList);
    });

    lblRedo.setOnMouseClicked((evt) -> {
            System.out.println("redo click " + originalList.equals(data));
            table.setItems(tableData);
    });

现在,我对table所做的任何更改都应仅反映在tableData而不是originalList中。但是这两个清单都带有更新的数据。

控制台中的输出是

undo click == false
undo click equals true
redo click true

如何维护不应更新的原始副本?

PS:我只有Observable列表tableData作为输入,无论我得到tableData的值,我都不能使用相同的源来填充originalList

0 个答案:

没有答案