Как отличить пользователя, выбирающего элемент, от getSelectedValue ()? - PullRequest
2 голосов
/ 23 января 2012

Есть ли какой-нибудь способ сказать во время выполнения valueChanged метода ListSelectionListener, нажал ли пользователь JList или был вызван setSelectedIndex каким-то другим кодом?

1 Ответ

2 голосов
/ 23 января 2012

AFAIK, нет.Но если цель состоит в том, чтобы выполнить что-то только в случае выбора от пользователя, вы можете установить флаг перед выбором индекса в коде, чтобы сигнализировать о том, что выбор не сделан от пользователя, или удалить слушателя и добавить его впоследствии:

private void selectIndexInList(int index) {
    this.selectionComesFromTheCode = true;
    try {
        list.setSelectedIndex(index);
    }
    finally {
        this.selectionComesFromTheCode = false;
    }
}

@Override
public void valueChanged(ListSelectionEvent e) {
    if (!this.selectionComesFromTheCode) {
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...