对于初学者来说,我有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
无法正常运行,因为addListSelectionListener
在e.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
一次,然后正确选择索引没有任何问题。