0

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

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

问题截图

现在,当我运行此代码时,该代码在我按 ctrl+F 时调用,并且如果我在输入对话框中输入“alfozen”,那么无论我搜索索引 0(第一项) 始终显示为选中状态,这是我在 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);
}
4

1 回答 1

3

那是因为你告诉它。

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

所以如果你有 5 个元素,并且第二个、第三个和第五个元素匹配,则ar包含 1、2、4、0、0。

因此,当您调用 时lst.setSelectedIndices(arr);,将选择元素 1、2、4、0 和 0。

于 2016-09-27T21:08:37.327 回答