第二次调用 setListData 后,JList setSelected 不再有效

JList setSelected no longer works after calling setListData a second time

好的初学者,我将 JList 作为全局变量,因为我用两种不同的方法调用它。

jList.setListData(arrays);
jList.setSelectedIndex(0);

所以这是我在将 JList 创建为

之后在 jList 中调用的第一件事
JList<String> jList = new JList<>();

然后我尝试更改 JButton Action 上的 JList 数据

chooseBtn.addActionListener(e -> chooseButtonClicked());

问题:

private void chooseButtonClicked() {
    jList.setListData(newData);
    jList.setSelectedIndex(0);
}

更新 JList 后,即使我调用 setSelectedIndex

也不再选择索引

看起来 setSelectedIndex 没有正常运行,因为 addListSelectionListenere.getSource().getSelectedValue();

上返回了 null

我添加了空检查

if (source instanceof JList) {
    JList < String > jList = (JList) e.getSource();
    if (jList != null) {
        String selectedValue = jList.getSelectedValue();
        if (selectedValue != null) {
            selectedIndex = selectedValue;
        } else {
            System.out.println("Failed to get Selected Value. Cause: NullPointerException");
        }
    } else {
        System.out.println("Failed to get JList. Cause: NullPointerException");
    }
}

它打印 Failed to get Selected Value. Cause: NullPointerException 一次,然后正确选择索引,没有任何问题。