2017-03-02 68 views
0


javafx媒體播放器中重複,全部重複,不重複

這是我的代碼。

boolean repeat=false, repeatall=false; 
static List<MediaPlayer> players = new ArrayList<>(); 
if(!players.isEmpty()){ 
     for (int i = 0; i < players.size(); i++) { 
      MediaPlayer currentPlayer=players.get(i); 
      //MediaPlayer nextPlayer=players.get((i+1) % players.size()); 
      int j=i; 
      currentPlayer.setOnEndOfMedia(new Runnable() { 
       @Override 
       public void run() { 
        currentPlayer.stop(); 
        if(repeat){ 
         currentPlayer.stop(); 
         mediaView.setMediaPlayer(currentPlayer); 
         currentPlayer.play(); 
        }else if(repeatall){ 
         MediaPlayer nextPlayer=players.get((j+1) % players.size()); 
         mediaView.setMediaPlayer(nextPlayer); 
         nextPlayer.play(); 
        }else if(!repeatall){ 
         if(j<players.size()){ 
          MediaPlayer nextPlayer=players.get((j+1)); //Error Here. When Players is playing last index 
          mediaView.setMediaPlayer(nextPlayer); 
          nextPlayer.play(); 
         } 
        } 
       } 
      }); 
     } 
    } 


這是我的媒體播放器的代碼,但它顯示了一些錯誤。
展示在此行

​​

錯誤時玩家是最後一個索引

Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 
at java.util.ArrayList.rangeCheck(ArrayList.java:653) 
at java.util.ArrayList.get(ArrayList.java:429) 
at am.fx.main.node.audioPlayer.PlayMenus$12.run(PlayMenus.java:243) \\That Line 
at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295) 
at com.sun.javafx.application.PlatformImpl$$Lambda$48/1294163646.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 


能否請你幫我解決這個代碼。

+0

顯示完整的異常堆棧跟蹤。 – MBec

+0

發佈例外 您可以看到。 –

回答

0

我解決了我的問題。

if(j<players.size()-1){ 
    MediaPlayer nextPlayer=players.get((j+1)); 
    mediaView.setMediaPlayer(nextPlayer); 
    nextPlayer.play(); 
} 

問題就迎刃而解了。