0

テーブル ビューでやり直し機能を作成しようとしています。このために、観察可能なリスト(テーブルビューデータ)のコピーを作成し、それを元の状態に維持して、さらに参照できるようにしました。

    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のみ反映されるはずです。しかし、どちらのリストにも更新されたデータが含まれています。tableDataoriginalList

コンソールの出力は

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

更新されるべきではない元のコピーを維持するにはどうすればよいですか?

PS: Observable リストtableDataを入力として持っているだけです。値を取得したソースが何であれtableData、同じソースを使用して を埋めることはできませんoriginalList

4

0 に答える 0