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

问题描述 投票:0回答:1

对于初学者来说,我有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,也不再选择索引

java jlist
1个回答
0
投票

看起来setSelectedIndex无法正常运行,因为addListSelectionListenere.getSource().getSelectedValue();上返回null

我添加了一个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一次,然后正确选择索引没有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.