Почему Jlist выбирает индекс 0, даже если элемента там нет

Почему Jlist выбирает индекс 0, даже если элемента там нет.

Вот мой код. Я создал список JList и установил его содержимое в виде вектора vct, который состоит из объектов класса people, который при вызове toString() предоставляет сведения о людях. Это выглядит так:

скриншот проблемы

теперь, когда я запускаю этот код, который вызывается, когда я нажимаю ctrl + F, и если я ввожу «alfozen» в диалоговое окно ввода, он выбирает 1-й, 3-й элемент, 5-й и 7-й, независимо от того, что я ищу по индексу 0 (1-й элемент ) всегда показывается выбранным. Это мой первый вопрос в stackOverflow. Пожалуйста, дайте мне знать, если я должен предоставить дополнительную информацию по этому вопросу. Большое спасибо заранее.

это код,

if ((ke.getKeyCode() == KeyEvent.VK_F) && ((ke.getModifiers() & 
KeyEvent.CTRL_MASK) != 0))
{
 int i=0,j=0;

 lst.clearSelection();
 lst.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

 String s=JOptionPane.showInputDialog("Enter Name to search : ");
   if(s==null)return;

 String arg[]=new String[vct.size()];
 int arr[]=new int[vct.size()];

 for(people p : vct)
 {
  arg[i++]=p.toString();
 }

for(j=0,i=0;j<arg.length;j++)
{
 if(arg[j].contains(s))
 {
  arr[i++]=j;
 }
}
lst.setSelectedIndices(arr);
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}

person Shubham Saraswat    schedule 27.09.2016    source источник
comment
Скорее всего, вам потребуется создать и опубликовать действительный минимально воспроизводимый пример или sscce, чтобы получить достойный ответ. Пожалуйста, посмотрите на эти ссылки.   -  person Hovercraft Full Of Eels    schedule 28.09.2016


Ответы (1)


Это было бы потому что вы так сказали.

После ваших циклов первые i элементы arr содержат совпадающие индексы. Что содержат остальные? Ну, вы никогда ничего им не присваивали, поэтому по умолчанию они содержат int значение 0.

Итак, если у вас есть 5 элементов, а второй, третий и пятый элементы совпадают, то ar содержит 1, 2, 4, 0, 0.

Итак, когда вы вызываете lst.setSelectedIndices(arr);, выбираются элементы 1, 2, 4, 0 и 0.

person user253751    schedule 27.09.2016
comment
@ShubhamSaraswat This is my first question at stackOverflow - не забудьте принять ответ, нажав на галочку, чтобы люди знали, что проблема решена. - person camickr; 28.09.2016
comment
@camickr Готово! Спасибо, приятель! - person Shubham Saraswat; 03.10.2016