• 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

VPS Starter Arubacloud
0 głosów
108 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,120 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,120 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 102 wizyt
0 głosów
2 odpowiedzi 312 wizyt
pytanie zadane 19 stycznia 2017 w Java przez niezalogowany
0 głosów
0 odpowiedzi 179 wizyt

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...