java - 迭代并添加到 observableArrayList - java

标签 java collections fxml

JFileChooser fileChooser = new JFileChooser();

    FileFilter ft = new FileNameExtensionFilter("MP3 Files", "mp3");
    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    fileChooser.setAcceptAllFileFilterUsed(false);
    fileChooser.addChoosableFileFilter(ft);

        if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
            String pathScannedOnLoad1 = fileChooser.getSelectedFile().toString();
            final MusicMediaCollection collection = MUSIC_SERVICE
            .createMusicMediaCollection(Paths.get(pathScannedOnLoad1));
    dataForTableView = FXCollections.observableArrayList(collection.getMusic());
    dataForTableView.addListener(makeChangeListener(collection));
    tableView.setItems(dataForTableView);
    tableView.setEditable(true); 
        }

这是我打开文件并将其添加到 javaFX 表的代码,我的问题是,我将如何更改此代码,以便它打开一个 jfilechooser,然后当用户选择其内容时将其添加到表中。现在,如果我尝试打开一个新文件,而内容已在表中,它将首先删除表中的所有内容,然后添加新内容。

谢谢,

最佳答案

该类ObservableList有一个很好的方法addAll() .

它的工作方式非常类似于“普通”java(非 fx)集合。

换句话说:在当前代码中,您只需创建一个全新的集合即可。您可以在现有集合上调用 addAll() 来添加新创建的集合,而不是这样做;像:

if (dataForTableView == null) { 
  dataForTableView = FXCollections.observableArrayList(...
} else {
  dataForTableView.addAll(FXCollections.observableArrayList(...
}

关于java - 迭代并添加到 observableArrayList - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621583/

相关文章:

java - 对象引用设置为 null 后会发生什么

java - 根据路径或参数在 2 个不同的 MarshallingHttpMessageConverter 实例之间进行选择

java - 返回不可修改的 map

kotlin - 如何展平可能包含列表的项目列表?

java - 以自然顺序存储集合中的独特元素

当我设置 Progress-Indicator.setVisible(true) 时,Javafx Progress-Indicator 不显示

download - 从哪里获取适用于 Windows x64 位的 JRE 二进制文件/zip?

java - 在 vaadin 中提供静态资源

java - 运行我的应用程序返回 : Javafx. fxml.LoadExeption

JavaFX setCellValueFactory 无法检索属性 IllegalAcessException