无法创建逻辑以从listView(播放列表)顺序播放所有文件。在每首歌曲(listview项目)结束时应该播放歌曲

时间:2017-06-20 09:42:31

标签: java javafx

这是我的代码,我在其中选择目录/文件夹来获取listview中的所有(mp3)文件。在listview中添加文件后,我想从第一个列表项逐个自动播放它们。我试图在for循环中使用listview项的索引。但逻辑错误的是一些人。我可能会遗漏一些东西帮助将受到关注。谢谢你的朋友们。

    DirectoryChooser directoryChooser = new DirectoryChooser();
    directoryChooser.setTitle("Select a Folder for Playlist");
    directoryChooser.setInitialDirectory(new File("D:\\Songs"));

    File dir = directoryChooser.showDialog(new Stage());

    playlist.getItems().addAll(dir.listFiles());

       try {



        playlist.getSelectionModel().selectLast();
        lastItemIndex = playlist.getSelectionModel().getSelectedIndex();

        playlist.getSelectionModel().selectFirst();
        fileToPlayIndex = playlist.getSelectionModel().getSelectedIndex();

    //  JOptionPane.showMessageDialog(null,fileToPlayIndex );


    for(int i=fileToPlayIndex; i<=lastItemIndex; i++ ){



        fileToPlay = playlist.getSelectionModel().getSelectedItem();

        Media media = new Media(fileToPlay.toURI().toString());
        mediaPlayer = new MediaPlayer(media);

       mdv.setMediaPlayer(mediaPlayer);
       mdv.setPreserveRatio(true);

       mediaPlayer.setAutoPlay(true);

       DoubleProperty width = mdv.fitWidthProperty();
       DoubleProperty height = mdv.fitHeightProperty();

       width.bind(Bindings.selectDouble(mdv.sceneProperty(), "width"));
       height.bind(Bindings.selectDouble(mdv.sceneProperty(),"Height"));


        // voulume slider 
            volslider();

        // seekslider implementation       
            seekslider();

        mediaPlayer.play();

         JOptionPane.showMessageDialog(null, "Media is playing ");


        mediaPlayer.setOnEndOfMedia(new Runnable() {
            @Override
            public void run() {

                mediaPlayer.stop();

                JOptionPane.showMessageDialog(null, "Media Has been ended.");

                playlist.getSelectionModel().selectNext();
                   //getting the changed(next) index of the list view item.
              fileToPlayIndex = playlist.getSelectionModel().getSelectedIndex(); 

              flag = 1;

                mediaPlayer.dispose();
            }
        });


     }



    } 
       catch (Exception eex) {
       JOptionPane.showMessageDialog(null,eex);
    }

}

0 个答案:

没有答案
相关问题