【问题标题】:JavaFX import mp3 Files to ListView [closed]JavaFX 将 mp3 文件导入 ListView [关闭]
【发布时间】:2020-10-04 02:22:07
【问题描述】:
我花了很多时间编写一个将 .mp3 文件导入我的 ListView 的方法。应该只显示文件名,但它总是说“表中没有内容”
fc = new FileChooser();
FileChooser.ExtensionFilter filter;
filter = new FileChooser.ExtensionFilter("MP3-File", "*.mp3");
fc.getExtensionFilters().add(filter);
String path = fc.showOpenDialog(null).toString();
media = new Media(new File(path).toURI().toString());
mp = new MediaPlayer(media);
String name = fc.getTitle();
Playlist item = new Playlist(name);
view.getTable().getItems().add(item);
【问题讨论】:
标签:
java
listview
javafx
import
【解决方案1】:
下面是一个小例子:当用户点击Button并在FileChooser对话框中成功选择一个文件时,不带扩展名的文件名(.mp3)将出现在ListView<File>。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.util.Callback;
import java.io.File;
public class App extends Application {
@Override
public void start(Stage stage) {
ListView<File> listView = new ListView<>();
listView.setCellFactory(new Callback<>() {
public ListCell<File> call(ListView<File> param) {
return new ListCell<>() {
@Override
protected void updateItem(File file, boolean empty) {
super.updateItem(file, empty);
// Show file name without extension (when item not null and not empty):
setText(file == null || empty ? null : file.getName().substring(0, file.getName().lastIndexOf(".")));
}
};
}
});
Button button = new Button("Add mp3 file");
button.setOnAction(actionEvent -> {
FileChooser fc = new FileChooser();
FileChooser.ExtensionFilter filter;
filter = new FileChooser.ExtensionFilter("MP3-File", "*.mp3");
fc.getExtensionFilters().add(filter);
File file = fc.showOpenDialog(stage);
if (file != null)
listView.getItems().add(file);
});
VBox vBox = new VBox();
vBox.getChildren().addAll(listView, button);
stage.setScene(new Scene(vBox));
stage.show();
}
public static void main(String[] args) {
launch();
}
}