java - 添加新项目后,如何在列表中保持选中框?
问题描述
我试图弄清楚如何在输入后将输入到我的列表中的新数据框变成选定的框。我实现了 getSelectionModel() 方法,可以单击列表中的任何项目,但我希望在添加新数据后选择我输入的新数据(周围有蓝色/灰色框)。我有这段代码可以将新数据添加到列表中,但我不确定是否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();
这就是我在运行代码时弹出列表的方式。
这是我输入新数据后我的列表的样子。
我希望在添加到列表后选择我输入的新数据。换句话说,如何在输入新数据后让我添加的项目被选中(周围的蓝色/灰色框)?
解决方案
您的代码不起作用,因为该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);
推荐阅读
- angular - 在 Spring Boot 中应用安全性但在 Postman 中没有应用后,Anguar 中的 401 响应
- javascript - 如何在单击添加按钮时增加现有数组的长度
- javascript - 如何检查对象是否为空?
- python - 如何通过 python 修改 .properties 文件中的信息
- visual-studio - How to copy dll file from visual studio solution to specific location on drive
- macos - I can not boot my own OS with a USB on my Mac
- testing - Postman Testing Scripts: How to change env variable after one test case?
- powershell - 将日志文件形成为表格
- java - 是否可以在 Flutter 中使用 Java 或 Kotlin 代码?
- mysql - 按相关性匹配的 SQL 排序结果并根据卖家排名显示价格