迭代并添加到observableArrayList - java

时间:2017-01-12 19:39:49

标签: 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,然后当用户选择其内容时,它将ADDS添加到表中。现在,如果我尝试打开一个新文件,而内容已经在表格中,它将首先删除表格中的内容,然后添加新内容。

谢谢,

1 个答案:

答案 0 :(得分:0)

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

它非常像“普通”java(非fx)集合。

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

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