迭代并添加到 observableArrayList - java
iteration and adding to a observableArrayList - java
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 的代码 table,我的问题是,我将如何更改此代码以便它打开 jfilechooser,然后当用户选择其内容时添加到 table。现在,如果我尝试打开一个新文件,而内容已经在 table 中,它将首先删除 table 中的任何内容,然后添加新内容。
谢谢,
那个 class ObservableList 有一个很好的方法 addAll().
它的工作原理非常像 "ordinary" java(非 fx)collections。
换句话说:在您当前的代码中,您只需创建一个完全 new collection。您可以在现有 collection 上调用 addAll() 来添加新创建的,而不是这样做;喜欢:
if (dataForTableView == null) {
dataForTableView = FXCollections.observableArrayList(...
} else {
dataForTableView.addAll(FXCollections.observableArrayList(...
}
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 的代码 table,我的问题是,我将如何更改此代码以便它打开 jfilechooser,然后当用户选择其内容时添加到 table。现在,如果我尝试打开一个新文件,而内容已经在 table 中,它将首先删除 table 中的任何内容,然后添加新内容。
谢谢,
那个 class ObservableList 有一个很好的方法 addAll().
它的工作原理非常像 "ordinary" java(非 fx)collections。
换句话说:在您当前的代码中,您只需创建一个完全 new collection。您可以在现有 collection 上调用 addAll() 来添加新创建的,而不是这样做;喜欢:
if (dataForTableView == null) {
dataForTableView = FXCollections.observableArrayList(...
} else {
dataForTableView.addAll(FXCollections.observableArrayList(...
}