【问题标题】: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);

【问题讨论】:

  • 发布一个最小代码示例,MCVE

标签: 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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 2016-05-24
    相关资源
    最近更新 更多