2017-03-02 8 views
0


を繰り返し、これは私のコードであるJavaFXの

にすべて、Media Playerではありません繰り返しを繰り返します。

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(); 
} 

問題が解決しました。

関連する問題