📄 jvideoplayerframe.java~237~
字号:
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
System.exit (0);
}
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 + -