为什么 Jlist 选择索引 0,即使该项目不存在。
这是我的代码,我创建了一个 JList lst 并将其内容设置为 vector vct,该 vector 由 people 类的对象组成,调用 toString() 时提供 people 的详细信息。看起来像这样,
现在,当我运行此代码时,当我按 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);
}
最佳答案
那是因为你告诉它的。
循环之后,arr 的前 i
元素包含匹配的索引。其余的内容是什么?好吧,您从未给它们分配任何内容,因此它们保留默认的 int
值 0。
因此,如果有 5 个元素,并且第二个、第三个和第五个元素匹配,则 ar
包含 1, 2, 4, 0, 0。
因此,当您调用 lst.setSelectedIndices(arr);
时,会选择元素 1、2、4、0 和 0。
关于java - 为什么 Jlist 选择索引 0,即使该项目不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734281/