Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么调用JList.clearSelection()会给我一个空指针异常?_Java_Swing_Nullpointerexception_Selection_Jlist - Fatal编程技术网

Java 为什么调用JList.clearSelection()会给我一个空指针异常?

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

这是我第一次发布,但我试图遵循指导原则,检查以前的问题等,因此对此的任何帮助都将不胜感激

我有一个名为history的JList,其中有一个包含表示简单数学方程的字符串列表(即2+2)。我希望这样,当您单击列表中的某个项目时,它会与输入字段中的另一个字符串连接,当我不尝试清除选择时(以便可以多次进行相同的选择),我的所有方法都会起作用,但当我尝试使用清除选择方法时,它会抛出一个空指针。这是我调用它的代码

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()) {