java - Java fxml,在 GUI 上填充列表中的项目
问题描述
我正在制作一个音乐播放器应用程序,使用 java 和 Scenebuilder 创建 GUI。导入音乐文件后,它们会显示在列表中。当我搜索音乐时,如果音乐在列表中,这个程序可以返回,并将音乐设置为下一个播放的音乐。[在此处输入图片描述][1]
这是问题。如何填充(突出显示)具有搜索音乐的行?
@FXML
private ListView<String> listBox;
private ObservableList<String> list = FXCollections.observableArrayList();
@FXML
private void searchMusic(ActionEvent event) {
avl.Find(searchTextBox.getText());
if (avl.Find(searchTextBox.getText()).equals("found!")) {
labelFind.setText("Found!");
listBox.focusModelProperty();
int searchInd = listBox.getItems().indexOf(searchTextBox.getText());
listBox.getFocusModel().focus(searchInd);
currentSong.setText(listBox.getFocusModel().getFocusedItem());
} else {
labelFind.setText("There is no such song.");
}
我正在为这个项目使用 AVL 树。即使我关注该行,它也不会填充该行。您的回答将不胜感激。谢谢你。[1]:https ://i.stack.imgur.com/76NnV.png
解决方案
使用最流行的方式并List
用您搜索的元素填充唯一的方式怎么样?
我不知道你的avl.find()
功能是做什么的,但逻辑很简单。
- 单击搜索按钮时,将在 中搜索
List
并提取具有此名称的元素。 - 清除您的
ListView<String> listBox
,listBox.getItems().clear()
,然后在此处添加您找到的项目。然后用户将只看到搜索到的元素。 - 如果没有找到,只需清除您的列表并显示一个空列表,表示没有这样的对象。
突出显示是可能的,不要误会我的意思,只是比上面的解决方案更复杂。
推荐阅读
- shopify - Shopify 在同一域中使用其他应用
- sqlite - 我如何动态旋转sqlite android
- spring-boot - 创建连接工厂数据源以在 JdbcTemplate springboot 中使用
- angularjs - 带有输入干扰枚举选择的 ngModel
- docker - 与非技术人员共享 Jupyter Notebook/Lab 输出
- windows - 如何将字符串发送到外部文本编辑器?
- api - youtube API nextPageToken 用于谷歌表格中的评论:重复标记或未定义
- c# - 是否可以使用 appium 从 samba 文件夹远程安装 .ipa?
- java - 返回 false 时的递归
- r - 如何根据变量值过滤 R 中的数据