Trocar vídeo no JMF [RESOLVIDO]

Ae galera,… blz!!!

seguinte, preciso setar uma lista de vídeos para o jmf…
ai qndo termina de tocar um video, ele troca pro proximo da lista…
Qndo chegar no final da lista, ele volta pra o primeiro…

Alguem tem uma ideia de como fazer isso…

tipow no meu código, eu jah peguei a duração do video e comparar com a posição atual do video…
ai jah sei qndo um termina… .o problema eh q eu naum consigo setar outro video pra tocar…

Entaum é isso galera…

se puderem me ajudar, ficarei grato…

Att,

Rafael Souza e Silva

Bom dia galera… ngn sabe como faço pra setar uma lista de videos para jmf???
ou pelo menos trocar o vídeo em tempo de execução?!?!

Att,

Rafael Souza e Silva.

Ae galera, dp de muita pesquisa consegui axar esse exemplo de trocar video no jmf…

Então é isso…

Abraçosss

package jmf;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JFrame;

public class NewListPlayer extends JFrame {

    private Player player = null;
    private ArrayList<Player> players = new ArrayList<Player>();
    private ArrayList<String> filelist = new ArrayList<String>();
    private String path = "C:/";
    private int playingIndex = -1;
    public int lungime;
    public int latime;
    EventHandler handler = new EventHandler();

    public NewListPlayer(int lung, int lat) {
        this.addWindowListener(
                new WindowAdapter() {

                    @Override
                    public void windowClosing(WindowEvent e) {
                        stop();
                        System.exit(0);
                    }
                });
        lungime = lung;
        latime = lat;
        try {
            readList();
        } catch (FileNotFoundException ex) {
            System.out.println(ex);
        } catch (IOException ex) {
            System.out.println(ex);
        }
        getContentPane().setBackground(Color.black);
        playNextInList();
        setSize(lungime, latime);
        setVisible(true);
    }

    // instead of opening just checking for readability
    private boolean checkFile(String path) {
        File file = new File(path);
        boolean ret = false;
        try {
            ret = file.canRead();
            file = null;
            return ret;
        } catch (Exception e) {
            file = null;
            System.out.println("File cannot be read");
            return false;
        }
    }

    //this is very important method, extracts player from list for current locator,
    //if player is already present in the list. Otherwise creates new player for the locator
    // and adds to the list
    private boolean PlayFile() {
        try {
            player = players.get(playingIndex);
            player.setMediaTime(new Time(0));
            player.start();
            updatePlayer();
        } catch (Exception ex1) {
            try {
                player = Manager.createPlayer(new MediaLocator(filelist.get(playingIndex)));
                player.addControllerListener(handler);
                players.add(player);
                player.start();
            } catch (Exception ex2) {
                ex2.getStackTrace();
                return false;
            }
        }
        return true;
    }
//this method is called from controller event handler as well as playFile method
    //used for adding visual and control components

    public void updatePlayer() {
        Container c = getContentPane();
        // load Visual and Control components if they exist
        Component visualComponent = player.getVisualComponent();
        if (visualComponent != null) {
            c.add(visualComponent, BorderLayout.CENTER);
        }
        Component controlsComponent = player.getControlPanelComponent();
        if (controlsComponent != null) {
            c.add(controlsComponent, BorderLayout.SOUTH);
        }
        c.doLayout();
    }

    // same method used Scanner instead
    private void readList() throws FileNotFoundException, IOException {
        String str = "";
        FileInputStream fstream = new FileInputStream(path + "lista.txt");
        Scanner scan = new Scanner(fstream);
        filelist.clear();
        while (scan.hasNext()) {
            if (checkFile(str = scan.nextLine())) {
                //add "file:" if you don't already have this in the playlist file locators
                filelist.add("file:" + str);
            }
        }
        fstream.close();
        scan.close();
    }

    private void playNextInList() {
        playingIndex++;
        if (playingIndex == filelist.size()) {
            playingIndex = 0;
        }
        if (!PlayFile()) {
            playNextInList();
        }
    }

    //added this method for closing all players at window closing
    void stop() {
        for (Player p : players) {
            p.stop();
            p.close();
        }
    }

    public static void main(String args[]) {
        new NewListPlayer(1280, 1024);
    }

    private class EventHandler implements ControllerListener {

        public void controllerUpdate(ControllerEvent e) {
            if (e instanceof RealizeCompleteEvent) {
                updatePlayer();
            }
            if (e instanceof EndOfMediaEvent) {
                if (player.getVisualComponent() != null) {
                    getContentPane().remove(player.getVisualComponent());
                }
                if (player.getControlPanelComponent() != null) {
                    getContentPane().remove(player.getControlPanelComponent());
                }
                player.stop();
                playNextInList();
            }
        }
    }
}