为什么Jlist正在选择索引0,即使该项目不存在

时间:2016-09-27 21:03:55

标签: java swing jlist selectionmodel

为什么Jlist正在选择索引0,即使该项目不存在也是如此。

这是我的代码我创建了一个JList lst,并将其内容设置为一个向量vct,它由类人的对象组成,当调用toString()时,它们提供了people.Which的详细信息,

screenshot of the problem

现在当我运行这个代码时按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);
}

1 个答案:

答案 0 :(得分:3)

那将是,因为你告诉了它。

在循环之后,arr的第一个i元素包含匹配的索引。其余的包含什么?好吧,你从来没有给他们任何东西,所以他们保持默认的int值0。

因此,如果您有5个元素,并且第二个,第三个和第五个元素匹配,则ar包含1,2,4,0,0。

因此,当您致电lst.setSelectedIndices(arr);时,会选择元素1,2,4,0和0。