📄 mediaframe.java
字号:
package Media;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.media.*;
import java.io.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class MediaFrame
extends JFrame implements ActionListener,ControllerListener,ItemListener{
JPanel contentPane;
//AviParser aviParser=new AviParser();
MenuBar menuBar1 = new MenuBar();
Menu menuFile = new Menu("File");
MenuItem menuFileExit = new MenuItem("Exit");
Menu menuHelp = new Menu("Help");
MenuItem menuHelpAbout = new MenuItem("About");
JToolBar jToolBar = new JToolBar();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();
ImageIcon image1 = new ImageIcon(Media.MediaFrame.class.getResource(
"openFile.png"));
ImageIcon image2 = new ImageIcon(Media.MediaFrame.class.getResource(
"stop.png"));
ImageIcon image3 = new ImageIcon(Media.MediaFrame.class.getResource(
"NoLoop.png"));
ImageIcon image4 = new ImageIcon(Media.MediaFrame.class.getResource(
"help.png"));
ImageIcon image5 = new ImageIcon(Media.MediaFrame.class.getResource(
"start.png"));
ImageIcon image6 = new ImageIcon(Media.MediaFrame.class.getResource(
"Loop.png"));
Label statusBar = new Label();
MenuItem menuItem1 = new MenuItem("Open");
MenuItem menuItem2 = new MenuItem("Stop/Start");
CheckboxMenuItem menuItem3 = new CheckboxMenuItem("Loop",false);
BorderLayout borderLayout1 = new BorderLayout();
JPanel plCenter=new JPanel();
Component screen = Box.createGlue();
Component control = Box.createGlue();
Player player;
String str=new String();
String name=new String();
String currentDirectory;
boolean loop = false,flag=false,stop=true,end=false;
public MediaFrame() {
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
public void windowClosed(WindowEvent e){
if (player != null) player.close ();
System.exit(0);
}
});
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
this.getContentPane().setBackground(SystemColor.control);
setSize(new Dimension(400, 340));
setTitle("java播放器");
setVisible(true);
statusBar.setText("欢迎使用本播放器!");
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addItemListener(this);
menuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
jMenuFileExit_actionPerformed(actionEvent);
}
});
menuHelpAbout.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
jMenuHelpAbout_actionPerformed(actionEvent);
}
});
jButton1.setMaximumSize(new Dimension(32, 32));
jButton1.setMinimumSize(new Dimension(32, 32));
jButton1.addActionListener(this);
jButton2.setMaximumSize(new Dimension(32, 32));
jButton2.setMinimumSize(new Dimension(32, 32));
jButton2.addActionListener(this);
jButton3.setMaximumSize(new Dimension(32, 32));
jButton3.setMinimumSize(new Dimension(32, 32));
jButton3.addActionListener(this);
jButton4.setMaximumSize(new Dimension(32, 32));
jButton4.setMinimumSize(new Dimension(32, 32));
jButton4.addActionListener(this);
menuBar1.add(menuFile);
menuFile.add(menuItem1);
menuFile.addSeparator();
menuFile.add(menuItem2);
menuFile.addSeparator();
menuFile.add(menuItem3);
menuFile.addSeparator();
menuFile.add(menuFileExit);
menuBar1.add(menuHelp);
menuHelp.add(menuHelpAbout);
setMenuBar(menuBar1);
jButton1.setIcon(image1);
jButton1.setToolTipText("Open");
jButton2.setIcon(image2);
jButton2.setToolTipText("Stop/Start");
jButton3.setIcon(image3);
jButton3.setToolTipText("Loop");
jButton4.setIcon(image4);
jButton4.setToolTipText("Help");
jToolBar.add(jButton1);
jToolBar.add(jButton2);
jToolBar.add(jButton3);
jToolBar.add(jButton4);
contentPane.add(jToolBar, java.awt.BorderLayout.NORTH);
contentPane.add(statusBar, java.awt.BorderLayout.SOUTH);
contentPane.add(plCenter,"Center");
plCenter.setLayout(new BorderLayout());
menuItem3.setEnabled(false);
}
/**
* File | Exit action performed.
*
* @param actionEvent ActionEvent
*/
void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
dispose();
System.exit(0);
}
/**
* Help | About action performed.
*
* @param actionEvent ActionEvent
*/
void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(this,"本软件制作于2007年7月","关于本软件",1);
}
public void itemStateChanged(ItemEvent e){
loop=!loop;
if(loop==false){
jButton3.setIcon(image3);
statusBar.setText("已退出循环!");
menuItem3.setState(false);
}
else{
jButton3.setIcon(image6);
menuItem3.setState(true);
if (stop == true)
statusBar.setText("循环开启.");
else
statusBar.setText("循环播放:" + name);
}
}
public void actionPerformed(ActionEvent e){
Object o=e.getSource();
if(o==menuItem1||o==jButton1){
//如果用jFileChooser, 多次打开文件时JVM容易出错
FileDialog fd = new FileDialog (this, "打开媒体文件", FileDialog.LOAD);
fd.setDirectory (currentDirectory);
fd.setVisible(true);
// 如果用户放弃选择文件,则返回
if (fd.getFile()== null) { Toolkit.getDefaultToolkit().beep();return;}
currentDirectory = fd.getDirectory ();
name=fd.getFile();//若放到line188以前,那么带开不选文件就出导致name=null
if (player != null)
player.close ();
try{player = Manager.createPlayer(new MediaLocator("file:/"+fd.getDirectory()+name));}
catch(IOException eo){
JOptionPane.showMessageDialog(this,"程序发生IOException例外","错误",0);return;}
catch(NoPlayerException ep){
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(this,"请选择音频或视频格式的文件","帮助",1);
statusBar.setText("请选择文件!");
player=null;
return;}
player.addControllerListener(this);
player.prefetch();
menuItem3.setEnabled(true);
}
if((o==menuItem2||o==jButton2)&&player!=null){
if(stop==false){
jButton2.repaint();
jButton2.setIcon(image5);
jButton2.setToolTipText("Start");
player.stop();
statusBar.setText(name+"已经暂停.");
stop=true;end=false;
}
else{
jButton2.setIcon(image2);
jButton2.setToolTipText("Stop");
if(end==true){
player.setMediaTime(new Time (0));
player.start ();
statusBar.setText("正在播放:" + name);
stop=false;
return ;
}
else {player.start();}
if(loop==true){statusBar.setText("循环播放:" + name);}
else statusBar.setText("正在播放:" + name);
stop=false;
}
}
if(o==jButton3&&player!=null){
loop=!loop;
if(loop==false){
jButton3.setIcon(image3);
statusBar.setText("已退出循环!");
}
else{
jButton3.setIcon(image6);
if (stop == true)
statusBar.setText("循环开启.");
else
statusBar.setText("循环播放:" + name);
}
}
if(o==jButton4){
jMenuHelpAbout_actionPerformed(e);
}
}
public void controllerUpdate(ControllerEvent e){
if (e instanceof ControllerClosedEvent) {
flag=true;loop=false;end=false;
if (screen != null) {
plCenter.remove(screen);
screen = null;
}
if (control != null) {
plCenter.remove(control);
control = null;
}
return;
}
if (e instanceof EndOfMediaEvent) {
if(loop) {
player.setMediaTime (new Time (0));
player.start ();
statusBar.setText("循环播放:"+name);
return ;
}
statusBar.setText(name+"已结束!");
jButton2.setIcon(image5);
jButton2.setToolTipText("Start");
stop=true;end=true;
return;
}
if (e instanceof PrefetchCompleteEvent) {
player.start();
stop=false;
return;
}
if (e instanceof RealizeCompleteEvent) {
if (end==false||flag==true) {
if(flag==true)
{jButton2.setIcon(image2);
jButton3.setIcon(image3);}
screen = player.getVisualComponent();
if (screen != null)
plCenter.add(screen);
control = player.getControlPanelComponent();
if (control != null)
plCenter.add(control, "South");
pack();
statusBar.setText("正在播放:" + name);
flag=false;stop=true;loop=false;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -