Я довольно новичок в Java и исчерпал свой Google для решения этой проблемы с выбором компонента JList. У меня есть список строк, которые динамически меняются, когда пользователь нажимает различные кнопки JButton. Мой режим выбора JList установлен в SINGLE_SELECTION, а ListSelectionModel зарегистрирован в пользовательском ListSelectionChangeHandler, который реализует ListSelectionListener.
Моя проблема заключается в том, что каждый раз, когда содержимое модели JList изменяется (щелкая JButton), вызывается ListSelectionChangeHandler и возникает исключение NullPointerException - например, Пользователь выбирает элемент в списке, нажимает кнопку, содержимое списка изменяется, и слушатель вызывается. Я хочу, чтобы ListSelectionListener выполнял какое-то действие только тогда, когда MouseClick запускает событие. Как я могу предотвратить прослушивание моего слушателя при изменении данных модели?
Соответствующий код:
this.suggestionsList = new JList();
this.suggestionsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p>
<p>ListSelectionModel model = this.suggestionsList.getSelectionModel();
model.addListSelectionListener(new ListSelectionChangeHandler());</p>
<p>class ListSelectionChangeHandler implements ListSelectionListener {</p>
<code>@Override
public void valueChanged(ListSelectionEvent arg0) {
Object selectedValue = suggestionsList.getSelectedValue();
// Perform action on selectedValue
// Enable/Disable components as needed
}
}
Спасибо за помощь!