第二次调用 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
没有正常运行,因为 addListSelectionListener
在 e.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
一次,然后正确选择索引,没有任何问题。
好的初学者,我将 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();
我添加了空检查
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
一次,然后正确选择索引,没有任何问题。