首页 > 解决方案 > 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

标签: javauser-interfacefxml

解决方案


使用最流行的方式并List用您搜索的元素填充唯一的方式怎么样?

我不知道你的avl.find()功能是做什么的,但逻辑很简单。

  1. 单击搜索按钮时,将在 中搜索List并提取具有此名称的元素。
  2. 清除您的ListView<String> listBox, listBox.getItems().clear(),然后在此处添加您找到的项目。然后用户将只看到搜索到的元素。
  3. 如果没有找到,只需清除您的列表并显示一个空列表,表示没有这样的对象。

突出显示是可能的,不要误会我的意思,只是比上面的解决方案更复杂。


推荐阅读