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

标签 java swing jlist selectionmodel

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

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

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);
}

最佳答案

那是因为你告诉它的。

循环之后,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/

相关文章:

JLIST 上的 Java 空指针异常

java - 将自定义对象从 JList 拖放到 JLabel

java - 通过 Mule Java 组件调用 Java 方法

java - 在Java中将整数数组转换为字符串的最佳方法

java - 当内部类中的变量值发生变化时,如何在整个外部类中更改变量值?

Java GridBagLayout定位

java - 如何使按钮不会干扰绘制形状的位置?

java - JList水平自动滚动到右侧

java - 使用 Guice 将委托(delegate)人注入(inject) RESTEasy 中的资源方法

java - 在 Kotlin 中扩展泛型类