这是我第一次发布,但我试图遵循指南并检查以前的问题等,所以对此的任何帮助都将非常感激。
我有一个名为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();
}
}
}
如果您需要更多信息,请告诉我
欢呼声
答案 0 :(得分:2)
if (select.getValueIsAdjusting()) {
作为一种猜测,我认为上面的代码行应该是值不调整
或者如果这不起作用,那么尝试将clearSelection()代码包装在SwingUtilities.invokeLater()中。
实际上问题可能是当您清除选择时会生成另一个valueChanged事件。这次getSelectedValue将返回一个空值,因为没有选择任何内容。因此,您可能需要在某处添加if条件来处理此问题。
否则需要SSCCE。