@Ratyk_ss

JavaFX mediaPlayer как запустить музыку?

Есть ArrayList с файлами музыки. При попытке запустить файл с музыкой вылетает 500 ошибок. Ошибка возникает из за конкретной строки:
media = new Media(songs.get(songNumber).toURI().toString());

Что делать? как решить? второй час голову ломаю.
package soundkeeper.sound;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.Slider;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.FileChooser;

import java.io.*;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;


public class HelloController implements Initializable {

    @FXML
    private ImageView addMusic;

    @FXML
    private ListView musicList;

     @FXML
    private ProgressBar musicProgress;

    @FXML
    private Slider musicVolumeScroll;
    @FXML
    private Label soundLabel;

    private ArrayList<File> songs ;

    private Media media;
    private MediaPlayer mediaPlayer;
    private int songNumber;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        songs = new ArrayList<File>();
        String fileName = System.getProperty("user.dir");
        File musicFile = new File(System.getProperty("user.dir")+"/music");
        boolean a = musicFile.mkdir();
        if (musicFile.length() > 0) {
            for (File file : musicFile.listFiles()) {
                songs.add(file);
            }
            refreshMusicList();
        }


    }
    @FXML
    public void getMusic(MouseEvent event) throws IOException {
        FileChooser MusicFile = new FileChooser();

        MusicFile.getExtensionFilters().addAll(
                new FileChooser.ExtensionFilter("MP3 Files", "*.mp3"));

        List<File> selectedFiles = MusicFile.showOpenMultipleDialog(null);

        File copyMusic;
        if (selectedFiles != null) {
            for (File file : selectedFiles) {
                copyMusic = new File(System.getProperty("user.dir")+"/music");
                Files.copy(file.toPath(),copyMusic.toPath(),REPLACE_EXISTING);
                songs.add(file);
            }
        }
        refreshMusicList();
    }

    public void refreshMusicList() {
        musicList.getItems().clear();
        for (int i = 0; i < songs.size(); i++) {
            musicList.getItems().add(songs.get(i).getName());
        }
    }

    @FXML
    void playMusic(MouseEvent event) {
        System.out.println(songs.get(songNumber).toURI().toString());
        media = new Media(songs.get(songNumber).toURI().toString());
        mediaPlayer = new MediaPlayer(media);
        mediaPlayer.play();
    }

}


Вот, что говорит консоль:

62f7bb713589a007282637.png
62f7bb791de2f387518684.png
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы