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

时间:2011-02-19 18:54:01

标签: java swing nullpointerexception selection jlist

这是我第一次发布,但我试图遵循指南并检查以前的问题等,所以对此的任何帮助都将非常感激。

我有一个名为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();
    }

}

}

如果您需要更多信息,请告诉我

欢呼声

1 个答案:

答案 0 :(得分:2)

if (select.getValueIsAdjusting()) {

作为一种猜测,我认为上面的代码行应该是值不调整

或者如果这不起作用,那么尝试将clearSelection()代码包装在SwingUtilities.invokeLater()中。

实际上问题可能是当您清除选择时会生成另一个valueChanged事件。这次getSelectedValue将返回一个空值,因为没有选择任何内容。因此,您可能需要在某处添加if条件来处理此问题。

否则需要SSCCE。