⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jvideoplayerframe.java

📁 这是本人刚刚得到的JBuilder9软件开发项目实践的源码
💻 JAVA
字号:
package jvideosystem;

import java.util.*;
import java.net.*;
import java.lang.reflect.Method;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

import javax.media.*;
import javax.media.util.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.media.protocol.*;
import javax.media.bean.playerbean.*;
import javax.media.rtp.*;
import javax.media.rtp.event.*;

//import com.sun.media.util.JMFI18N;
//import com.sun.media.rtp.RTPSessionMgr;

import jvideosystem.util.*;
import javax.swing.border.*;

/**
 * <p>Title: 视频播放系统</p>
 * <p>Description: JBuilder实现视频播放</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: 格瑞特公司</p>
 * @author 蔡斌
 * @version 1.0
 */

public class JVideoPlayerFrame extends JFrame  implements
ControllerListener, ItemListener
{
  JPanel contentPane;
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenuFile = new JMenu();
  JMenuItem jMenuFile_open = new JMenuItem();
  JMenu jMenuHelp = new JMenu();
  JMenuItem jMenuHelp_about = new JMenuItem();
  BorderLayout borderLayout1 = new BorderLayout();
  JMenu jMenuPlay = new JMenu();
  JMenuItem jMenuFile_exit = new JMenuItem();
  JCheckBoxMenuItem jCheckBoxMenuItem_loop = new JCheckBoxMenuItem();

  JLabel jLabel1 = new JLabel();
  JPanel jPanelVideo = new JPanel();
  TitledBorder titledBorder1;
  BorderLayout borderLayout2 = new BorderLayout();

  //private FileDialog              dlgOpenFile = null;
  //private DataSource              dataSourceCurrent = null;
  //private String                  audioEffect = null;
  //private String                  videoEffect = null;
  //protected MediaPlayer       mediaPlayerCurrent = null;
  protected Cursor            cursorWait = new Cursor ( Cursor.WAIT_CURSOR );
  Player player;
  Component visualcom, controlcom;
  boolean first = true, loop = false;
  String currentDirectory;
  FileDialog fd ;

  //Construct the frame
  public JVideoPlayerFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    titledBorder1 = new TitledBorder("");
    contentPane.setLayout(borderLayout1);

    this.getContentPane().setBackground(Color.lightGray);
    this.setLocale(new java.util.Locale("zh", "CN", ""));
    this.setResizable(false);
    this.setSize(new Dimension(400, 300));
    this.setTitle("格瑞特视频播放系统");
    this.addWindowListener(new JVideoPlayerFrame_this_windowAdapter(this));


    jMenuFile.setText("文件");
    jMenuFile.addActionListener(new JVideoPlayerFrame_jMenuFile_actionAdapter(this));
    jMenuFile_open.setText("打开");
    jMenuFile_open.addActionListener(new JVideoPlayerFrame_jMenuFile_open_ActionAdapter(this));
    jMenuFile_exit.setText("退出");
    jMenuFile_exit.addActionListener(new JVideoPlayerFrame_jMenuFile_exit_actionAdapter(this));

    jMenuPlay.setText("播放");
    jCheckBoxMenuItem_loop.setSelected(false);
    jCheckBoxMenuItem_loop.setText("循环播放");
    jCheckBoxMenuItem_loop.addActionListener(new JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(this));

    jMenuHelp.setText("帮助");
    jMenuHelp_about.setText("关于");
    jMenuHelp_about.addActionListener(new JVideoPlayerFrame_jMenuHelp_about_ActionAdapter(this));

    jPanelVideo.setToolTipText("视频窗口");
    jPanelVideo.setVerifyInputWhenFocusTarget(true);
    jPanelVideo.setLayout(borderLayout2);
    jLabel1.setToolTipText("状态栏");
    jMenuBar1.setToolTipText("菜单栏");
    jMenuFile.add(jMenuFile_open);
    jMenuFile.add(jMenuFile_exit);
    jMenuPlay.add(jCheckBoxMenuItem_loop);
    jMenuHelp.add(jMenuHelp_about);
    jMenuBar1.add(jMenuFile);
    jMenuBar1.add(jMenuPlay);
    jMenuBar1.add(jMenuHelp);
    this.setJMenuBar(jMenuBar1);

    jLabel1.setBorder(BorderFactory.createLoweredBevelBorder());
    jLabel1.setOpaque(true);
    jLabel1.setIcon(new ImageIcon(JVideoPlayerFrame.class.getResource("about.png")));
    jLabel1.setText("欢迎使用格瑞特视频播放系统 copyright@2003");

    contentPane.add(jLabel1, BorderLayout.SOUTH);
    contentPane.add(jPanelVideo, BorderLayout.CENTER);

  }


  //File | Open action performed
  public void jMenuFile_open_actionPerformed(ActionEvent e) {
    FileDialog fd = new FileDialog (this, "打开媒体文件", FileDialog.LOAD);
    fd.setDirectory (currentDirectory);
    fd.show ();
    // 如果用户放弃选择文件,则返回
    if (fd.getFile() == null)
      return;
    currentDirectory = fd.getDirectory();
    if (player != null)
      player.close();
    try {
      player = Manager.createPlayer(new MediaLocator
                                    ("file:" + fd.getDirectory() + fd.getFile()));
    }
    catch (java.io.IOException e2) {
      System.out.println(e2);
      return;
    }
    catch (NoPlayerException e2) {
      System.out.println("不能找到播放器.");
      return;
    }
    if (player == null) {
      System.out.println("无法创建播放器.");
      return;
    }

    //this.setCursor ( cursorWait );
    first = false;
    setTitle("播放文件位置 " + fd.getDirectory() + fd.getFile());

    player.addControllerListener ( this );
    //player.realize();
    player.prefetch();
  }
  public void controllerUpdate (ControllerEvent e)
  {
// 调用player.close()时ControllerClosedEvent事件出现。
// 如果存在视觉部件,则该部件应该拆除(为一致起见,
// 我们对控制面板部件也执行同样的操作)
    if (e instanceof ControllerClosedEvent) {
      if (visualcom != null) {
        jPanelVideo.remove(visualcom);
        visualcom = null;
      }
      if (controlcom != null) {
        jPanelVideo.remove(controlcom);
        controlcom = null;
      }
      return;
    }
    if (e instanceof EndOfMediaEvent) {
      if (loop) {
        player.setMediaTime(new Time(0));
        player.start();
      }
      return;
    }
    if (e instanceof PrefetchCompleteEvent) {
      player.start();
      return;
    }
      if (e instanceof RealizeCompleteEvent) {
      visualcom = player.getVisualComponent();
      if (visualcom != null)
        jPanelVideo.add(visualcom, BorderLayout.CENTER );
      controlcom = player.getControlPanelComponent();
      if (controlcom != null)
        jPanelVideo.add(controlcom, BorderLayout.SOUTH );

      this.pack();
    }
  }


  public void itemStateChanged (ItemEvent e)
  {
    //loop = !loop;
  }


  //Help | About action performed
  public void jMenuHelp_about_actionPerformed(ActionEvent e) {
    JVideoPlayerFrame_AboutBox dlg = new JVideoPlayerFrame_AboutBox(this);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
    dlg.setModal(true);
    dlg.pack();
    dlg.show();
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      jMenuFile_open_actionPerformed(null);
    }
  }

  //File | Exit action performed
  void jMenuFile_exit_actionPerformed(ActionEvent e) {
    dispose ();
    return;
  }

  void this_windowClosing(WindowEvent e) {
    // 用户点击窗口系统菜单的关闭按钮
    // 调用dispose以执行windowClosed
    dispose();
  }

  void this_windowClosed(WindowEvent e) {
    System.exit (0);

  }

  void jMenuFile_actionPerformed(ActionEvent e) {

  }

  void jCheckBoxMenuItem_loop_actionPerformed(ActionEvent e) {
    loop = !loop;
  }


}

class JVideoPlayerFrame_jMenuFile_open_ActionAdapter implements ActionListener {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_jMenuFile_open_ActionAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenuFile_open_actionPerformed(e);
  }
}

class JVideoPlayerFrame_jMenuHelp_about_ActionAdapter implements ActionListener {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_jMenuHelp_about_ActionAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenuHelp_about_actionPerformed(e);
  }
}

class JVideoPlayerFrame_jMenuFile_exit_actionAdapter implements java.awt.event.ActionListener {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_jMenuFile_exit_actionAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenuFile_exit_actionPerformed(e);
  }
}

class JVideoPlayerFrame_this_windowAdapter extends java.awt.event.WindowAdapter {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_this_windowAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void windowClosing(WindowEvent e) {
    adaptee.this_windowClosing(e);
  }
  public void windowClosed(WindowEvent e) {
    adaptee.this_windowClosed(e);
  }
}

class JVideoPlayerFrame_jMenuFile_actionAdapter implements java.awt.event.ActionListener {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_jMenuFile_actionAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenuFile_actionPerformed(e);
  }
}

class JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter implements java.awt.event.ActionListener {
  JVideoPlayerFrame adaptee;

  JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(JVideoPlayerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jCheckBoxMenuItem_loop_actionPerformed(e);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -