Изменение расположения элемента в DefaultListModel - PullRequest
0 голосов
/ 07 марта 2012

Я работаю над DefaultListModel.Мне потребуется переместить выбранный элемент в первую или последнюю (не вверх и вниз) позицию в списке.Как переместить выбранный элемент в DefaultListModel в первое или последнее местоположение без замены?

1 Ответ

1 голос
/ 07 марта 2012

Я предполагаю, что проблема в том, что когда вы нажимаете кнопку «вверх» или «вниз», элемент перемещается, но поскольку вы удалили его из списка, а затем добавили снова, это не больше выбран. Модель выбора списка обрабатывает событие «удалить» и очищает его выбор, поскольку выбранный элемент был удален.

Я знаю два способа исправить это, оба неэлегантные:

  1. Сделайте так, чтобы действие "Переместить" также обновило модель выбора, чтобы сохранить выбранный элемент.
  2. Переместите элемент, сохранив его в списке и переместив все остальные элементы. Итак, если список [1, 2, 3, 4] и вы хотите переместить 3 в начало, сначала удалите 1 и 2, чтобы получить [3, 4], затем добавьте их обратно в индекс 1, чтобы получить [3 , 1, 2, 4]. (При этом используется тот факт, что модель выбора обновляет выбранный индекс при добавлении и удалении событий)

Я обычно использовал (2), потому что, хотя это немного больше работы, он позволяет логике перемещения работать только с моделью списка, а не с моделью выбора.

...