📄 mediaframe.java
字号:
package javamediaplayer;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.io.*;import java.net.*;import javax.media.*;import javax.media.bean.playerbean.*;/** * Title: 使用Java制作的媒体播放器 * Description: 这个播放器利用了Java Media Frame API来实现主要功能 * Copyright: Copyright (c) 2001 * Company: * @author * @version 1.0 */public class MediaFrame extends JFrame implements ControllerListener{ JPanel contentPane; JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenuFile = new JMenu(); JMenuItem jMenuFileExit = new JMenuItem(); JMenu jMenuHelp = new JMenu(); JMenuItem jMenuHelpAbout = new JMenuItem(); JLabel statusBar = new JLabel(); BorderLayout borderLayout1 = new BorderLayout(); JMenuItem jMenuOpenFile = new JMenuItem(); JMenuItem jMenuOpenUrl = new JMenuItem(); JPanel jPanelVideo = new JPanel(); BorderLayout borderLayout2 = new BorderLayout(); JMenu jMenuCtrl = new JMenu(); JCheckBoxMenuItem jCheckBoxMenuAutoRep = new JCheckBoxMenuItem(); MediaPlayer player; Component visualComponent=null; Component controlComponent=null; boolean displaying=false; String currentFile=""; String currentUrl=""; /**Construct the frame*/ public MediaFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**Component initialization*/ private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(MediaFrame.class.getResource("[Your Icon]"))); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); jMenuCtrl.setText("Control"); jCheckBoxMenuAutoRep.setText("Auto Replay"); jCheckBoxMenuAutoRep.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { jCheckBoxMenuAutoRep_itemStateChanged(e); } }); contentPane.add(statusBar, BorderLayout.SOUTH); contentPane.add(jPanelVideo, BorderLayout.CENTER); this.setSize(new Dimension(400, 300)); this.setTitle("媒体播放器"); statusBar.setText(" "); JPopupMenu.setDefaultLightWeightPopupEnabled(false) ; jMenuFile.setText("File"); jMenuFileExit.setText("Exit"); jMenuFileExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jMenuFileExit_actionPerformed(e); } }); jMenuHelp.setText("Help"); jMenuHelpAbout.setText("About"); jMenuHelpAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jMenuHelpAbout_actionPerformed(e); } }); jMenuOpenFile.setText("Open File..."); jMenuOpenFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuOpenFile_actionPerformed(e); } }); jMenuOpenUrl.setText("Open Url..."); jMenuOpenUrl.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuOpenUrl_actionPerformed(e); } }); jPanelVideo.setLayout(borderLayout2); jMenuFile.add(jMenuOpenFile); jMenuFile.add(jMenuOpenUrl); jMenuFile.add(jMenuFileExit); jMenuHelp.add(jMenuHelpAbout); jMenuBar1.add(jMenuFile); jMenuBar1.add(jMenuCtrl); jMenuBar1.add(jMenuHelp); this.setJMenuBar(jMenuBar1); jMenuCtrl.add(jCheckBoxMenuAutoRep); } /**File | Exit action performed*/ public void jMenuFileExit_actionPerformed(ActionEvent e) { System.exit(0); } /**Help | About action performed*/ public void jMenuHelpAbout_actionPerformed(ActionEvent e) { MediaFrame_AboutBox dlg = new MediaFrame_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.show(); } /**Overridden so we can exit when window is closed*/ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { jMenuFileExit_actionPerformed(null); } } void jMenuOpenUrl_actionPerformed(ActionEvent e) { try{ OpenUrlDlg urlDlg=new OpenUrlDlg(this,currentUrl); urlDlg.show(); if(urlDlg.getAction() ==OpenUrlDlg.ACTION_OPEN ){ URL selUrl=new URL(urlDlg.getUrl()); if(selUrl!=null) open(selUrl); currentUrl=selUrl.toString(); } this.repaint() ; }catch(Exception ex){ } } void jMenuOpenFile_actionPerformed(ActionEvent e) { JFileChooser fileOpenDlg=new JFileChooser(); String FileName=""; if(!currentFile.equals("") ){ fileOpenDlg.setSelectedFile(new File(currentFile)); } if(JFileChooser.APPROVE_OPTION== fileOpenDlg.showOpenDialog(this)){ File selFile=fileOpenDlg.getSelectedFile(); if(selFile!=null) FileName=selFile.getPath() ; } this.repaint() ; if(!FileName.equals("")) { open(FileName); } } void open(String FileName){ try{ URL selUrl=new URL("file://"+FileName); currentFile=FileName; open(selUrl); }catch(Exception e){ System.out.println(e) ; } } void open(URL selUrl) throws Exception { killCurrentPlayer() ; displaying=false; player=new MediaPlayer(); player.addControllerListener(this) ; player.setMediaLocation(selUrl.toString()); player.setPlaybackLoop(jCheckBoxMenuAutoRep.getState()); player.realize(); statusBar.setText("文件:"+selUrl.toString()); } public synchronized void controllerUpdate ( ControllerEvent event ) { if ( event instanceof RealizeCompleteEvent ) { visualComponent=null; controlComponent=null; if((visualComponent=player.getVisualComponent())!=null){ jPanelVideo.add(visualComponent,"Center"); } if((controlComponent=player.getControlPanelComponent())!=null){ jPanelVideo.add(controlComponent,"South"); } resizePanel(); this.pack() ; displaying=true; player.prefetch(); } else if ( event instanceof PrefetchCompleteEvent ) { player.start(); } this.validate(); } void resizePanel(){ Dimension dimVisual=new Dimension(0,0); Dimension dimControl=new Dimension(0,0); int width=0; int height=0; if(visualComponent!=null) dimVisual= visualComponent.getPreferredSize(); if(controlComponent!=null) { dimControl=controlComponent.getPreferredSize(); } width=dimVisual.width; height=dimControl.height+dimVisual.height; if(width==0) width=100; if(height==0) height=50; jPanelVideo.setSize(width, height); } void rePaint(){ jPanelVideo.repaint(); super.repaint() ; } void killCurrentPlayer () { killCurrentView (); if ( player != null ) { player.close (); player.removeControllerListener ( this ); player = null; } displaying=false; } void killCurrentView () { if(displaying){ if(visualComponent!=null) jPanelVideo.remove(visualComponent); if(controlComponent!=null) jPanelVideo.remove(controlComponent); visualComponent=null; controlComponent=null; } } void jCheckBoxMenuAutoRep_itemStateChanged(ItemEvent e) { if(player!=null) player.setPlaybackLoop(jCheckBoxMenuAutoRep.getState() ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -