我有一个ListView,想要以编程方式选择多个索引 Platform.runLater()
问题:如果我想要选择的索引是顺序的(例如{5,6,7}),则选择工作正常.如果存在间隙(例如{5,7,8}),则抛出OOB异常.
java.lang.IndexOutOfBoundsException: [ fromIndex: 0, toIndex: 5, size: 3 ]
Run Code Online (Sandbox Code Playgroud)
我相信Java9中可能存在一个错误(这个异常在我们从Java8升级到9之后就开始出现了)MultipleSelectionModelBase#set.
对于索引{5,6,7},该方法调用_nextAdd(from, to)值0和3.(0包含,3独占,我假设指的是我的数组中的索引0,1,2 {5,6,7})
对于指数{5,7,8},它要求_nextAdd(0,2)对{5}与_nextAdd(2,5)该指数{7,8}.
我认为应该改为_nextAdd(0,1)与_nextAdd(1,3)因为我的阵列只有3个要素,而不是5.
使用参数0,5 javafx.collections.ListChangeListener#getAddedSubList调用时最终会抛出异常getList().subList(getFrom(), getTo())
我搜索了错误报告,但无法找到有关此问题的任何信息.
在提交错误报告之前,我想我会问这里.
MVCE
启动程序,单击"选择578"按钮.抛出(并捕获)异常:[fromIndex:0,toIndex:5,size:3]
要么
注释掉"clearSelection"行.
启动程序,单击"选择567",然后单击"选择578".
抛出(并捕获)异常:[fromIndex:8,toIndex:9,size:4]
package sample;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends …Run Code Online (Sandbox Code Playgroud)