无法清除ObservableList中的所有项(元素)

Ram*_*ses 4 javafx removeall observablelist

我在一个observable列表中有几个复制元素,我在TableView中用于复制/粘贴操作.表的名称是cpTable(c opy和p aste T able),用于存储复制的元素和粘贴存储在表中的元素.每次粘贴操作后,我想清除cpTable的内容,然后用Ctrl + C复制其他选定的项目.但我总是得到错误:

JavaFX应用程序线程"java.lang.UnsupportedOperationException:不支持.
在com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList.remove(ReadOnlyUnbackedObservableList.java:246)

这是我的伪代码:

if (cpTable !=null) {
    //first, get all copied items for removing all elements 
    ObservableList<String> copiedItems = cpTable.getItems();                                 
    int size = copiedItems.size();

    // remove all elements 
    for(int i=0;i<size;i++) {
        copiedItems.remove(i);
    }
    cpTable.setItems(copiedItems); //clear cpTable by setting an empty list
}
Run Code Online (Sandbox Code Playgroud)

这是一种复制所选项目内容并将其放入cpTable的方法

public TableView<String> copySelectionToClipboard(TableView<String> table) {            
    ObservableList<String> data =     table.getSelectionModel().getSelectedItems();             
    TableView<String> tmp = new TableView<>();
    tmp.setItems(data);
    return tmp;
Run Code Online (Sandbox Code Playgroud)

}

按下Ctrl + C时,以下行将所有复制的项目放在cpTable中:

cpTable = copySelectionToClipboard( (TableView<String>) keyEvent.getSource());
Run Code Online (Sandbox Code Playgroud)

如上所述,我希望在粘贴表格中的项目后立即清除所有cpTable内容.

Sed*_*ick 7

只需清除您的Observable List.看起来你应该使用copiedItems.clear(); 那应该清除你的表.