在javafx中删除除listview中所选项目以外的其他项目
我一直在尝试删除除javafx中listview中所选项目之外的所有项目。我已经编写了以下代码。它有时有效,有时无效。我无法找出我的错误。任何帮助都将不胜感激在javafx中删除除listview中所选项目以外的其他项目,java,listview,javafx,Java,Listview,Javafx,我一直在尝试删除除javafx中listview中所选项目之外的所有项目。我已经编写了以下代码。它有时有效,有时无效。我无法找出我的错误。任何帮助都将不胜感激 try { int i = 0; while (!listName.getItems().equals(listName.getSelectionModel().getSelectedItems())) { if (listName.getSelectionModel().isSelected(i) ==
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();
}
您只需创建一个要保留的项目数组,并使用
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();
});
ListView ListView=新建ListView();
for(char c='a';c{
Character[]selection=listView.getSelectionModel()
.getSelectedIndices()
.stream()
.已排序()
.map(listView.getItems()::get)
.toArray(字符[]::新建);
listView.getItems().setAll(选择);
getSelectionModel().selectAll();
});
您的计数器i的用途是什么?@KeyMaker00应该很明显:它是经过删除测试的索引。如果选择了索引,则代码应该遍历列表的索引,并且对于每次索引检查,如果未选择,则删除索引i
处的项。@fabian:没错,因此变量也应该表示此意图(代码气味)。(+1供您解释)