这是我的代码,我在其中选择目录/文件夹来获取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);
}
}