我编写了一个JavaFX示例,其中显示了ListView
(右),其项目是另一个ListView
(左)的选定项目。右ListView
会自动跟踪第一个选择更改。
这很好用,但是当我使用键盘将选择扩展到列表的下端之外时有一个例外:选择列表的最后一项然后Shift + ArrowDown会导致此异常:
java.lang.IllegalStateException:无效的更改状态:next()必须是 在检查变更之前调用。
知道为什么会这样吗?这是我的代码或JavaFX中的错误吗?
public void start(Stage stage) {
ObservableList<String> items = FXCollections.observableArrayList(
"Julia", "Ian", "Sue", "Matthew", "Hannah", "Stephan", "Denise");
ListView<String> listView = new ListView<>(items);
MultipleSelectionModel<String> selectionModel = listView.getSelectionModel();
selectionModel.setSelectionMode(SelectionMode.MULTIPLE);
ObservableList<String> selectedItems = selectionModel.getSelectedItems();
ListView<String> selectedItemsListView = new ListView<>(selectedItems);
HBox root = new HBox(5, listView, selectedItemsListView);
Scene scene = new Scene(root, 500, 300);
stage.setTitle("List View Sample");
stage.setScene(scene);
stage.show();
}