因此,我正在製作一個帶有javafx的MP3播放器,其中有一個ListView
,用於拖放歌曲,然後選擇一首歌曲並按播放播放它,您就會明白了。 問題是,用我現在的代碼,我不能播放兩個以上歌曲的序列:/(播放選定的歌曲,播放歌曲旁邊的歌曲然後停止)。 下面的代碼:無法播放播放列表中的所有歌曲
public class MainController implements Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
list.setItems(tracklist);
}
private MediaPlayer player;
private Duration pausetime = null;
private int i;
ObservableList<String> tracklist = FXCollections.observableArrayList();
ArrayList<File> playlist = new ArrayList<File>();
ArrayList<MediaPlayer> players = new ArrayList<MediaPlayer>();
@FXML
private Slider slider;
@FXML
private Button open;
@FXML
private Label csong;
@FXML
private ListView<String> list;
public void getsongfromlist(){
i = list.getSelectionModel().getSelectedIndex();
}
public void slide(int a){
slider.setMin(0.0);
slider.setValue(0.0);
player.currentTimeProperty().addListener(new ChangeListener<Duration>(){
@Override
public void changed(ObservableValue<? extends Duration> observableValue, Duration duration,
Duration current) {
// TODO Auto-generated method stub
slider.setMax(players.get(a).getTotalDuration().toSeconds());
slider.setValue(current.toSeconds());
}
});
}
public void move(){
player.seek(Duration.seconds(slider.getValue()));
}
public void play(){ //This is where im getting it wrong
if (player != null){
player.stop();
}
this.player = players.get(i);
player.play();
slide(i);
csong.setText(playlist.get(i).getName());
for (int j = 0; j < players.size(); j++){
player.setOnEndOfMedia(new Runnable(){
@Override public void run(){
i++;
list.getSelectionModel().select(i);
player = players.get(i);
player.play();
slide(i);
csong.setText(playlist.get(i).getName());
}
});
}
}
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasFiles()) {
event.acceptTransferModes(TransferMode.COPY);
} else {
event.consume();
}
}
public void dropped(DragEvent event){
Dragboard db = event.getDragboard();
event.acceptTransferModes(TransferMode.COPY);
boolean success = false;
if (db.hasFiles()){
success = true;
for (File file:db.getFiles()){
tracklist.add(file.getName());
playlist.add(file);
try {
final Media media = new Media(file.toURI().toURL().toString());
final MediaPlayer set = new MediaPlayer(media);
players.add(set);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
event.setDropCompleted(success);
event.consume();
}
}
工作,謝謝! – Peralta 2015-04-05 12:31:26