0
我希望能夠顯示僅顯示文件名的文件列表,而不是整個文件路徑。顯示連接完整文件路徑時的文件名列表
目前我有一個文件列表。當我單擊其中一個文件時,監聽器會將這個文件傳遞給超出加載文件範圍的方法。
這意味着如果我只是傳遞一個文件名列表,它將不再起作用,因爲我的偵聽器需要一個完整的文件路徑。我對如何存儲一個文件名列表,同時將它們鏈接到完整的文件路徑沒有任何想法。
很高興回答您的任何問題。非常感謝,
注意:small for循環顯示了我可能如何從文件路徑中提取文件名,但目前我沒有對它進行任何操作。這只是一個例子,向你展示我得到了多少。
public void GetFilesFromFolder(String dirName) throws IOException {
File dir = new File(dirName);
File[] files = dir.listFiles((File dir1, String filename) -> filename.endsWith(".mp3"));
String[] fileName = new String[files.length];
int x = 0;
for (File file : files) {
String fileTemp = file.toString();
fileTemp = fileTemp.substring(fileTemp.lastIndexOf("\\" + 1));
System.out.println(fileTemp);
fileName[x] = fileTemp;
System.out.println(fileName[x]);
x++;
}
observableList.clear();
observableList.addAll(files);
}
public void SetFileListView() throws IOException {
listView.setItems(null);
}
public VBox listStack() throws IOException {
vbox = new VBox();
vbox.getChildren().add(listView);
listView.setItems(observableList);
listView.setMinHeight(500);
MusicDataModel mdm = MainView.getMainView().musicDataModel;
MusicDataViewController mdv = MainView.getMainView().musicDataViewController;
listView.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends File> observable, File oldValue, File newValue) -> {
try {
mdm.load(newValue.toString());
mdv.SetValues();
} catch (UnsupportedTagException | InvalidDataException | IOException | NotSupportedException ex) {
Logger.getLogger(FileListView.class.getName()).log(Level.SEVERE, null, ex);
}
});
return vbox;
}
儘管這個功能非常好,而且我很感激,現在當我點擊列表中的一個項目時,它會變慢,你會猜測可能導致它的原因。我認爲它可能會再生一些東西。 –
沒有線索。這比使用自定義單元更有可能是您的監聽器代碼。 'updateItem(...)'方法被非常頻繁地調用,例如,如果您滾動,那麼如果出現性能問題,您會在除選擇項目之外的時間看到它們。 –