Я учусь использовать списки в Java Swing. При написании небольшой программы для понимания работы ListSelectionModel
и ListSelectionEvent
с использованием JList
, я смутился относительно значений, заданных getFirstIndex
и getLastIndex
.Swing путаница о firstIndex и lastIndex
документация по каждому говорит -
getFirstIndex
:
Возвращает индекс первого ряда, чей выбор может быть изменен.
и getLastIndex
Возвращает индекс последней строки, чей выбор может быть изменен.
Теперь давайте говорить у меня есть список, как это (с выбором одного диапазона допустимого) -
Element 1
Element 2
Element 3
Element 4
Element 5
Первоначально никто не selected.Now, я выбрал 1 и firstIndex дало 0, LastIndex дал 0, верно.
Теперь я, удерживая сдвиг и выбран 3. Здесь firstIndex дал 0 и LastIndex дал 2. LastIndex это хорошо, но у меня есть несколько вопросов, касающихся стоимости firstIndex -
Элемент 1 является все еще выбранный и его выбор не изменился, тогда как firstIndex 0?
Учитывая, что указанная выше точка не должна быть первойIndex равной 1, так как это первая строка, выбор которой изменился (не выбран -> выбран)?
Также в списке показаны элементы, выбранные другим фоном. Теперь, когда я делаю выбор, он также показывает, что элемент с границей? Что это значит?
Хорошо. Но, скажем, я держу этот выбор. Теперь, удерживая Shift нажатой, я выбираю элемент 4. Затем firstIndex возвращает 2 и lastIndex 3. Не должно ли оно 0-3? – Cygnus
Я не могу воспроизвести проблему. Если я выберу первый элемент списка, нажмите и удерживайте клавишу shift и выберите третий элемент списка. Затем выбирают 1 2 3. Если я удерживаю клавишу shift и выбираю 4. выбирают 1 2 3 4. Я попробовал это с помощью этого примера app http://docs.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html –
Нет, вы меня неправильно поняли. Я говорю, что выборы в порядке - я вижу 1,2,3,4 выбранных. Но firstIndex возвращает 2 и lastIndex 3, а не 0 и 3. – Cygnus