• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Funkcja .setOnEndOfMedia() nie działa

Object Storage Arubacloud
0 głosów
109 wizyt
pytanie zadane 17 kwietnia 2018 w Java przez maxym49 Nowicjusz (180 p.)
zamknięte 24 października 2018 przez maxym49

Nie mogę znaleźć rozwiązania dla mojej funkcji (odtwarzanie mp3). 
Funckja działa jedynie dla ostatniego pliku na liście i nie wiem dlaczego tak się dzieje, ktoś byłby tak miły i by mnie nakierował? Próbowałem przeróżnych rzeczy - od pobierania czasu trwania pliku i wpisywania if-ów do tworzenia wątków, ale rezultat był ciągle ten sam. Oto fragment kodu: 
 

    private static MediaPlayer mediaPlayer;
    private static FileChooser fileChooser;
    private List<File> selectedFiles;
 
@FXML
void openDirectory(){
        try {
            fileChooser = new FileChooser();
            FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter("mp3 files (*.mp3)", "*.mp3");
            fileChooser.getExtensionFilters().add(extensionFilter);
            selectedFiles = fileChooser.showOpenMultipleDialog(null);
 
 
        }catch (Exception e){
            System.out.println("No file");
        }
 
 
 
@FXML
void play() {
        try {
 
            Iterator  iterator = selectedFiles.listIterator();
            for (int i = 0; i < selectedFiles.size(); i++) {
 
 
                   Object element = iterator.next();
                   //System.out.println(element+" ");
 
 
                    String path = element.toString().replace("\\", "/");
                    System.out.println(path);
 
                    System.out.println();
 
 
 
                    final Media media = new Media("file:///" + path);
                    mediaPlayer = new MediaPlayer(media);
                    mediaPlayer.setAutoPlay(true);
 
 
 
                    mediaPlayer.setOnEndOfMedia(() -> {
 
                        mediaPlayer.stop();
                       
 
                });
 
 
 
            }
        }catch (Exception e){
            System.out.println("You need to choose the music file like mp3 etc");
            System.out.println("The error name:\n"+e);
        }
 
    }



 

komentarz zamknięcia: Iterator + pętla for powodowała błąd, trzeba było usunąć iterator
komentarz 18 kwietnia 2018 przez Wiciorny Ekspert (269,710 p.)

Iterator  iterator = selectedFiles.listIterator();    

okej określasz iterator.

 private List<File> selectedFiles;

A FileChooser can be used to invoke file open dialogs for selecting single file (showOpenDialog), file open dialogs for selecting multiple files (showOpenMultipleDialog) and file save dialogs (showSaveDialog). 

selectedFiles.size()

Dalej  idąc ... twoj obiekt jest tylko jednym plikiem dlaczego ? 

 selectedFiles = fileChooser.showOpenMultipleDialog(null);

może dlatego :)  ze selected file jest nullem  

https://docs.oracle.com/javase/8/javafx/api/javafx/stage/FileChooser.html 

 size? NO odpowiedź sobie na pytanie jaki jest rozmiar.... i to odpowiedź dlaczego zwraca Ci jedną iteracje dla i=0;

 

komentarz 20 kwietnia 2018 przez Wiciorny Ekspert (269,710 p.)

@maxym49  poradziłeś sobie z problemem? 

1 odpowiedź

–1 głos
odpowiedź 17 kwietnia 2018 przez mbabane Szeryf (79,280 p.)
Skoro przelatujesz przez wszystkie pliki (zaznaczone), to obiekt Media zawsze będzie zawierał ostatni plik.

Podobne pytania

0 głosów
0 odpowiedzi 103 wizyt
0 głosów
2 odpowiedzi 321 wizyt
pytanie zadane 19 stycznia 2017 w Java przez niezalogowany
0 głosów
0 odpowiedzi 183 wizyt

92,565 zapytań

141,418 odpowiedzi

319,604 komentarzy

61,951 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...