?? jvideoplayerframe.java
字號:
package jvideosystem;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.media.*;
import java.io.*;
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.*;
import java.io.Serializable;
import java.util.*;//為了導入Vector
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class JVideoPlayerFrame extends JFrame implements ControllerListener{
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFileexit = new JMenu();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
BorderLayout borderLayout1 = new BorderLayout();
JLabel jLabel1 = new JLabel();
JPanel jPanelVideo = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JMenuItem jMenuFileopen = new JMenuItem();
JMenu jMenu1 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
URL url;
Player player;
//Component visualcom,controlcom;
Component visualcom,controlcom;
//boolean first=true,loop=false;
boolean first=true,loop=false;
//String currentDirectory;
String currentDirectory;
// FileDialog fd;
FileDialog fd;
private JList list;//播放清單
private JScrollPane scroll;//使播放清單具有滾動功能
private ListValues listWriteFile;//用于向文件中讀取對象
private ObjectInputStream input;//對象輸入流
private ObjectOutputStream output;//對象輸出流
private Vector fileName,dirName,numList;
//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();
contentPane.setLayout(borderLayout1);
this.setResizable(false);
this.setSize(new Dimension(400, 300));
this.setTitle("Java媒體播放器");
jMenuFileexit.setText("文件");
jMenuHelp.setText("幫助");
jMenuHelpAbout.setText("關(guān)于");
jMenuHelpAbout.addActionListener(new JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(this));
jLabel1.setOpaque(true);
jLabel1.setToolTipText("狀態(tài)欄");
jLabel1.setText("Java 視頻播放系統(tǒng)");
jPanelVideo.setLayout(borderLayout2);
jPanelVideo.setOpaque(true);
jPanelVideo.setToolTipText("視頻窗口");
jMenuFileopen.setText("打開");
jMenuFileopen.addActionListener(new JVideoPlayerFrame_jMenuFileopen_actionAdapter(this));
jMenu1.setText("播放");
jMenuItem1.setText("循環(huán)播放");
jMenuItem1.addActionListener(new JVideoPlayerFrame_jMenuItem1_actionAdapter(this));
jMenuItem2.setText("退出");
jMenuItem2.addActionListener(new JVideoPlayerFrame_jMenuItem2_actionAdapter(this));
jMenuItem3.setText("播放列表");
jMenuFileexit.add(jMenuFileopen);
jMenuFileexit.add(jMenuItem2);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFileexit);
jMenuBar1.add(jMenuHelp);
jMenuBar1.add(jMenu1);
contentPane.add(jLabel1, BorderLayout.SOUTH);
contentPane.add(jPanelVideo, BorderLayout.CENTER);
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem3);
this.setJMenuBar(jMenuBar1);
}
//File | Exit action performed
public void jCheckBoxMenultem_loop_actionPerformed(ActionEvent e) {
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_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) {
jCheckBoxMenultem_loop_actionPerformed(null);
}
}
void jMenuFileopen_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(Exception e2){
System.out.println(e2);
return;
}
if (player==null){
System.out.println("無法創(chuàng)建播放器");
return;}
first=false;
//設(shè)置主界面的標題為媒體文件的目錄名加上文件名
this.setTitle("播放文件位置"+fd.getDirectory()+fd.getFile());
//將JVideoPlayerFrame對象注冊為來自JMF播放器對象的控制器事件的動作監(jiān)聽器
player.addControllerListener(this);
//最后,讓JMF播放器對象預先提取媒體文件的內(nèi)容
player.prefetch();
}
public void controllerUpdate(ControllerEvent e){
if (e instanceof ControllerClosedEvent){
//如果視覺部件還存在
if(visualcom != null) {
//從jPanelVideo面板中刪除該視覺部件
jPanelVideo.remove(visualcom);
visualcom = null;
}
//如果控制面板部件還存在
if(controlcom !=null) {
//從jPanelVideo面板中刪除該控制面板部件
jPanelVideo.remove(controlcom);
controlcom =null;
}
return;
}
//當媒體播放結(jié)束時
if(e instanceof EndOfMediaEvent){
//如果帶檢查框的“循環(huán)播放”菜單項被選中
if(loop) {
//復位JMF播放器對象的開始時間
player.setMediaTime(new Time(0));
//讓JMF播放器對象重新播放媒體
player.start();
}
return;
}
//如果預取媒體文件內(nèi)容結(jié)束時
if (e instanceof PrefetchCompleteEvent) {
//讓JMF播放器對象開始播放該媒體
player.start();
//reEurn;
}
//當實例化(Realize)媒體文件完成時
if(e instanceof RealizeCompleteEvent) {
//獲取JMF播放器對象的視覺部件
visualcom =player.getVisualComponent();
//如果視覺部件存在
if(visualcom !=null)
//將視覺部件加入到j(luò)PanelVideo面板的中央
jPanelVideo.add(visualcom,BorderLayout.CENTER);
//獲取JMF播放器對象的控制面板部件
controlcom =player.getControlPanelComponent();
//如果控制面板部件存在
if(controlcom !=null)
//將控制面板部件加入到j(luò)PanelVideo面板的底端
jPanelVideo.add(controlcom,BorderLayout.SOUTH);
//執(zhí)行pack操作
this.pack();
}
}
void jMenuItem2_actionPerformed(ActionEvent e) {
dispose();
return;
}
void jMenuItem1_actionPerformed(ActionEvent e) {
loop =!loop;
}
JMenuItem jMenuItem3 = new JMenuItem();
}
class JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuHelpAbout_actionPerformed(e);
}
}
class JVideoPlayerFrame_jMenuFileopen_actionAdapter implements java.awt.event.ActionListener {
JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuFileopen_actionAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuFileopen_actionPerformed(e);
}
}
class JVideoPlayerFrame_jMenuItem2_actionAdapter implements java.awt.event.ActionListener {
JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuItem2_actionAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem2_actionPerformed(e);
}
}
class JVideoPlayerFrame_jMenuItem1_actionAdapter implements java.awt.event.ActionListener {
JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuItem1_actionAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem1_actionPerformed(e);
}
}
class ListValues implements Serializable
{
private String fileName;
private String dirFileName;
ListValues()
{
setFileName("歌曲名字");
setDirFileName("E:\\歌曲名字");
}
ListValues(String fileNameC,String dirFileNameC)
{
setFileName(fileNameC);
setDirFileName(dirFileNameC);
}
void setFileName(String fileNameC)
{
fileName=fileNameC;
}
void setDirFileName(String dirFileNameC)
{
dirFileName=dirFileNameC;
}
String getFileName()
{
return fileName;
}
String getDirName()
{
return dirFileName;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -