JList setSelected在第二次调用setListData之后不再起作用

时间:2018-11-15 07:45:09

标签: java jlist

对于初学者来说,我将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

,也不再选择索引

1 个答案:

答案 0 :(得分:0)

由于setSelectedIndexaddListSelectionListener上返回了空值,因此e.getSource().getSelectedValue();似乎无法正常工作

我添加了一个空值检查

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,然后正确选择索引而不会出现任何问题。