0

我一直在尝试删除 javafx 中列表视图中的选定项目以外的所有项目。我已经编写了以下代码。它有时有效,有时无效。我无法弄清楚我的错误。任何帮助,将不胜感激 !!

try {
    int i = 0;
    while (!listName.getItems().equals(listName.getSelectionModel().getSelectedItems())) {
        if (listName.getSelectionModel().isSelected(i) == false) {
            listName.getItems().remove(i);
            i--;
        }
        i++;
    }
} catch (Exception e) {
    e.printStackTrace();
}
4

1 回答 1

0

您可以简单地创建一个项目数组来保留和使用ObservableList.setAll来替换整个列表:

ListView<Character> listView = new ListView<>();
for (char c = 'a'; c <= 'z'; c++) {
    listView.getItems().add(c);
}
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

Button delete = new Button("delete");
delete.setOnAction(evt -> {
    Character[] selection = listView.getSelectionModel()
            .getSelectedIndices()
            .stream()
            .sorted()
            .map(listView.getItems()::get)
            .toArray(Character[]::new);

    listView.getItems().setAll(selection);
    listView.getSelectionModel().selectAll();
});
于 2018-07-05T10:50:16.397 回答