【问题标题】:Why is this call to JList.clearSelection() giving me a null pointer exception?为什么这个对 JList.clearSelection() 的调用给了我一个空指针异常?
【发布时间】:2012-05-07 14:43:19
【问题描述】:

这是我第一次发布,但我尝试遵循指南并检查以前的问题等,因此非常感谢任何帮助。

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

}

}

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

干杯

【问题讨论】:

  • 考虑创建并发布SSCCE(请点击链接),这是一个可编译、可运行的小型程序,展示了您解决此问题的最佳尝试。然后我们可以检查您的代码、运行它、修改它并最好地帮助您修复它。
  • 异常在哪一行?

标签: java swing nullpointerexception selection jlist


【解决方案1】:
if (select.getValueIsAdjusting()) {

作为一个猜测,我认为上面的代码行应该是如果值没有调整

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

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

否则需要SSCCE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 2011-12-13
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多