0

I have successfully developed software to play video files in Java JPanel, but how to stop video and immediately open other frame?

PlayerPanel

public class PlayerPanel extends JPanel{
     private File vlcInstallPath = new File("C:\\Program Files\\VideoLAN\\VLC");

     private EmbeddedMediaPlayer player;

     public PlayerPanel() {
         NativeLibrary.addSearchPath("libvlc", vlcInstallPath.getAbsolutePath());
         EmbeddedMediaPlayerComponent videoCanvas = new EmbeddedMediaPlayerComponent();
         this.setLayout(new BorderLayout());
         this.add(videoCanvas, BorderLayout.CENTER);
         this.player = videoCanvas.getMediaPlayer();
     }

     public void play(String media) {
         player.prepareMedia(media);
         player.parseMedia();
         player.play();
     }

}

VideoPlayer

class VideoPlayer extends JFrame {

     public VideoPlayer() {
          PlayerPanel player = new PlayerPanel();
          this.setTitle("Swing Video Player");
          this.setDefaultCloseOperation(EXIT_ON_CLOSE);
          this.setLayout(new BorderLayout());
          this.setSize(640, 480);
          this.setLocationRelativeTo(null);
          this.add(player, BorderLayout.CENTER);
          this.validate();
          this.setVisible(true);

          player.play("C:\\Users\\pc\\Documents\\NetBeansProjects\\DesktopApplication2\\src\\Wildlife.wmv");
     }

      public static void main(String[] args) {
          new VideoPlayer();
      }
 }
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
  • 3
    See [The Use of Multiple JFrames, Good/Bad Practice?](http://stackoverflow.com/a/9554657/418556) Use one frame and a `CardLayout` instead. – Andrew Thompson Apr 15 '14 at 12:09
  • 1
    Also, your player PlayerPanel variable is declared in the VideoPlayer constructor and only visible inside of the constructor. Outside of the constructor it doesn't exist, so I don't see how you can get any of the other parts of your class interacting with this object. Your set up is very restricting. – Hovercraft Full Of Eels Apr 15 '14 at 12:14

2 Answers2

0

Add a JButton to your panel and add an actionlistener to stop the viedo : player.stop();

Video Player

public VideoPlayer() {

    this.setTitle("Swing Video Player");
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(new BorderLayout());
    this.setSize(640, 480);
    this.setLocationRelativeTo(null);
    this.add(player, BorderLayout.CENTER);
    this.validate();
    this.setVisible(true);

    player.play("C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv");
    player.jb.addActionListener(al);
}
ActionListener al = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        player.stop();
    }
};

public static void main(String[] args) {
    new VideoPlayer();
}

}

Player Panel

 private File vlcInstallPath = new File("C:\\Program Files\\VideoLAN\\VLC");
private EmbeddedMediaPlayer player;
public static JButton jb = new JButton("STOP");

public PlayerPanel() {
    NativeLibrary.addSearchPath("libvlc", vlcInstallPath.getAbsolutePath());
    EmbeddedMediaPlayerComponent videoCanvas = new EmbeddedMediaPlayerComponent();

    this.setLayout(new BorderLayout());
    this.add(videoCanvas, BorderLayout.CENTER);
    this.add(jb, BorderLayout.SOUTH);
    this.player = videoCanvas.getMediaPlayer();
}

public void play(String media) {
    player.prepareMedia(media);
    player.parseMedia();
    player.play();
}

public void stop() {
    player.stop();
}
0

and move to another frame then you must use below code.. if another java frame was EmployeeRegister.java'enter code here public VideoPlayer() {enter code here` player = new PlayerPanel(); this.setTitle("Swing Video Player"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new BorderLayout()); this.setSize(640, 480); this.setLocationRelativeTo(null); this.add(player, BorderLayout.CENTER); this.validate(); this.setVisible(true);

      player.play("C:\\Users\\pc\\Documents\\NetBeansProjects\\DesktopApplication2\\src\\Wildlife.wmv");
      player.jb.addActionListener(al);
 }
 ActionListener al=new ActionListener() {

     public void actionPerformed(ActionEvent ae) {
          //To change body of generated methods, choose Tools | Templates.
         player.stop();
        dispose();
         new EmployeeRegister().setVisible(true);
     }
 };