📄 jvideoplayerframe.java~9~
字号:
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.*;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 implementsControllerListener, 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 + -