对于初学者来说,我将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
答案 0 :(得分:0)
由于setSelectedIndex
在addListSelectionListener
上返回了空值,因此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
,然后正确选择索引而不会出现任何问题。