添加新项目后如何保持列表中的框处于选中状态?

How to keep the box selected in the list, after adding a new item?

我想弄清楚如何在输入后将输入到我的列表中的新数据框放入选定框中。我将 getSelectionModel() 方法实现到可以单击列表中的任何项目的位置,但我希望在添加新数据后选择我输入的新数据(使其周围有 blue/gray 框)。我有这段代码可以将新数据添加到列表中,但我不确定 listView.getSelectionModel().select(name); 是否是获得我想要的结果的方法。

String newLine = name + "," + artist + "," + year + "," + album;
obsList.add(name.trim() + " " + artist.trim());
writeToFile(newLine);
nameBox.setText(name);
artistBox.setText(artist);
albumBox.setText(year);
yearBox.setText(year);
listView.getSelectionModel().select(name); //this is what I added to try to select the box after I added  new info
sortOBS();

这就是我 运行 代码时列表的弹出方式。

这是我输入新数据后列表的样子。

我希望我输入的新数据在添加到列表后被选中。换句话说,如何在输入新数据后选择我添加的项目(blue/gray 框)?

您的代码不起作用,因为 select() 方法采用描述元素索引而不是实际元素的整数。

您需要保留刚刚添加的元素,以便稍后查找索引。而不是像这样匿名添加元素:

obsList.add(name.trim() + " " + artist.trim());

命名元素然后添加它,如下所示:

String entry = name.trim() + " " + artist.trim();
obsList.add(entry);

现在,而不是这个:

listView.getSelectionModel().select(name); // wrong

你可以这样做:

listView.getSelectionModel().select(obsList.indexOf(entry));

您可能更愿意懒一点,假设每个新条目的索引。由于您只执行 obsList.add() 而不指定位置,这意味着您总是添加到列表的末尾。新添加的元素的索引总是obsList.size() - 1,所以你可以这样做:

listView.getSelectionModel().select(obsList.size() - 1);