Java 为什么调用JList.clearSelection()会给我一个空指针异常?
这是我第一次发布,但我试图遵循指导原则,检查以前的问题等,因此对此的任何帮助都将不胜感激 我有一个名为history的JList,其中有一个包含表示简单数学方程的字符串列表(即2+2)。我希望这样,当您单击列表中的某个项目时,它会与输入字段中的另一个字符串连接,当我不尝试清除选择时(以便可以多次进行相同的选择),我的所有方法都会起作用,但当我尝试使用清除选择方法时,它会抛出一个空指针。这是我调用它的代码Java 为什么调用JList.clearSelection()会给我一个空指针异常?,java,swing,nullpointerexception,selection,jlist,Java,Swing,Nullpointerexception,Selection,Jlist,这是我第一次发布,但我试图遵循指导原则,检查以前的问题等,因此对此的任何帮助都将不胜感激 我有一个名为history的JList,其中有一个包含表示简单数学方程的字符串列表(即2+2)。我希望这样,当您单击列表中的某个项目时,它会与输入字段中的另一个字符串连接,当我不尝试清除选择时(以便可以多次进行相同的选择),我的所有方法都会起作用,但当我尝试使用清除选择方法时,它会抛出一个空指针。这是我调用它的代码 import javax.swing.JList; import javax.swing.L
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class HistoryListener implements ListSelectionListener {
JList history;
ListSelectionModel historySelection;
public HistoryListener(JList history) {
this.history = history;
historySelection = history.getSelectionModel();
}
@Override
public void valueChanged(ListSelectionEvent select) {
if (select.getValueIsAdjusting()) {
NumListener.addHistory(history.getSelectedValue().toString());
}
if (history.isSelectionEmpty() == false) {
history.clearSelection();
}
}
}
如果你需要更多的信息,请告诉我
干杯
作为猜测,我认为如果值没有调整,那么上面的代码行应该是
或者,如果这不起作用,则尝试将clearSelection()代码包装到SwingUtilities.invokeLater()中
实际上,问题可能是当您清除选择时,会生成另一个valueChanged事件。这次getSelectedValue将返回空值,因为未选择任何内容。因此,您可能需要在某处添加if条件来处理此问题
否则需要SSCCE。考虑创建并发布一个(请单击链接),一个小型可编译、可运行的程序,演示您解决此问题的最佳尝试。然后,我们可以检查您的代码,运行它,修改它,并尽可能帮助您修复它。哪一行是异常?
if (select.getValueIsAdjusting()) {