Почему этот вызов JList.clearSelection () дает мне исключение нулевого указателя? - PullRequest
0 голосов
/ 19 февраля 2011

я публикую это впервые, но я попытался следовать рекомендациям и проверил предыдущие вопросы и т. Д., Поэтому любая помощь по этому вопросу будет принята с благодарностью.содержит список строк, представляющих простые математические уравнения (т.е. 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 Ответ

2 голосов
/ 19 февраля 2011
if (select.getValueIsAdjusting()) {

В качестве предположения, я думаю, что приведенная выше строка кода должна быть, если значение НЕ корректируется

Или, если это не работает, попробуйте обернуть код clearSelection () в SwingUtilities.invokeLater ().

На самом деле проблема может заключаться в том, что при очистке выбора генерируется другое событие valueChanged.На этот раз getSelectedValue вернет нулевое значение, так как ничего не выбрано.Таким образом, вам, вероятно, понадобится добавить условие if где-нибудь для обработки этого.

В противном случае необходим SSCCE.

...