为什么 Jlist 选择索引 0,即使该项目不存在
Why Jlist is selecting index 0 even when the item is not present there
为什么 Jlist 选择索引 0,即使该项目不存在。
这是我的代码,我创建了一个 JList lst 并将其内容设置为向量 vct,它由 class 人的对象组成,调用 toString() 时提供了 people.Which 外观的详细信息像这样,
现在当我 运行 按下 ctrl+F 时调用的这段代码
如果我在输入对话框中输入 "alfozen",
然后它选择第一项、第三项、第五项和第七项,无论我搜索什么,索引 0(第一项)始终显示为选中状态,这是我在 Whosebug 的第一个问题,如果我应该提供有关 [的更多信息,请告诉我=24=]提前很多
这是代码,
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。
为什么 Jlist 选择索引 0,即使该项目不存在。
这是我的代码,我创建了一个 JList lst 并将其内容设置为向量 vct,它由 class 人的对象组成,调用 toString() 时提供了 people.Which 外观的详细信息像这样,
现在当我 运行 按下 ctrl+F 时调用的这段代码 如果我在输入对话框中输入 "alfozen", 然后它选择第一项、第三项、第五项和第七项,无论我搜索什么,索引 0(第一项)始终显示为选中状态,这是我在 Whosebug 的第一个问题,如果我应该提供有关 [的更多信息,请告诉我=24=]提前很多
这是代码,
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。