package jvideosystem;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.media.*;
public class JVideoPlayerFrame extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFile_open = new JMenuItem();
JMenu jMenuPlay = new JMenu();
JMenuItem jCheckBoxMenuItem_loop = new JMenuItem();
JLabel jLabel1 = new JLabel();
JPanel jPanelVideo = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JMenuItem jMenuFile_exit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelp_about = new JMenuItem();
Player player;
Component visualcom, controlcom;
boolean first = true;
boolean loop = false;
String currentDirectory;
FileDialog fd;
public JVideoPlayerFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();}}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("Java音频播放器");
this.addWindowListener(new JVideoPlayerFrame_this_windowAdapter(this));
jMenuFile.setText("文件");
jMenuFile_open.setText("打开");
jMenuFile_open.addActionListener(new
JVideoPlayerFrame_jMenuFileExit_ActionAdapter(this));
jMenuPlay.setText("播放");
jCheckBoxMenuItem_loop.setText("循环播放");
jCheckBoxMenuItem_loop.addActionListener(new
JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(this));
jLabel1.setOpaque(true);
jLabel1.setToolTipText("状态栏");
jLabel1.setText("欢迎使用JAVA音频播放器@计算机013班02号张南");
jPanelVideo.setLayout(borderLayout2);
jPanelVideo.setToolTipText("播放窗口");
jMenuFile_exit.setText("退出");
jMenuHelp.setText("帮助");
jMenuHelp_about.setText("关于");
jMenuFile_exit.addActionListener(new
JVideoPlayerFrame_jMenuFile_exit_actionAdapter(this));
jCheckBoxMenuItem_loop.addActionListener(new
JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(this));
jMenuHelp_about.addActionListener(new
JVideoPlayerFrame_jMenuHelp_about_actionAdapter(this));
jMenuBar1.add(jMenuFile);
jMenuFile.add(jMenuFile_open);
jMenuFile.add(jMenuFile_exit);
jMenuBar1.add(jMenuPlay);
jMenuBar1.add(jMenuHelp);
jMenuPlay.add(jCheckBoxMenuItem_loop);
contentPane.add(jLabel1, java.awt.BorderLayout.SOUTH);
contentPane.add(jPanelVideo, java.awt.BorderLayout.CENTER);
jMenuHelp.add(jMenuHelp_about);
setJMenuBar(jMenuBar1);}
void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent) {
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();}
void this_windowClosed(WindowEvent e) {
System.exit(0);}
void this_windowClosing(WindowEvent e) {
dispose();}
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;
first = false;
this.setTitle("播放文件位置" + fd.getDirectory() + fd.getFile());
player.prefetch();}}
public void controllerUpdate(ControllerEvent e) {
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();}}
void jMenuFile_exit_actionPerformed(ActionEvent e) {
dispose();
return;}
void jCheckBoxMenuItem_loop_actionPerformed(ActionEvent e) {
loop = !loop;}
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();}
class JVideoPlayerFrame_jMenuHelp_about_actionAdapter implements
ActionListener {
private JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuHelp_about_actionAdapter(JVideoPlayerFrame
adaptee) {
this.adaptee = adaptee;}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuHelp_about_actionPerformed(e);}}
class JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter implements
ActionListener {
private JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(
JVideoPlayerFrame
adaptee) {
this.adaptee = adaptee;}
public void actionPerformed(ActionEvent e) {
adaptee.jCheckBoxMenuItem_loop_actionPerformed(e);}}
class JVideoPlayerFrame_jMenuFile_exit_actionAdapter implements
ActionListener {
private 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 WindowAdapter {
private JVideoPlayerFrame adaptee;
JVideoPlayerFrame_this_windowAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;}
public void windowClosed(WindowEvent e) {
adaptee.this_windowClosed(e);}
public void windowClosing(WindowEvent e) {
adaptee.this_windowClosing(e);}}
class JVideoPlayerFrame_jMenuFileExit_ActionAdapter implements
ActionListener {
JVideoPlayerFrame adaptee;JVideoPlayerFrame_jMenuFileExit_ActionAdapter(JVideoPlayerFrame adaptee) {
this.adaptee = adaptee;}
public void actionPerformed(ActionEvent actionEvent) {
adaptee.jMenuFile_open_actionPerformed(actionEvent);}}
class JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter implements
ActionListener {
JVideoPlayerFrame adaptee;
JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(JVideoPlayerFrame
adaptee) {
this.adaptee = adaptee;}
public void actionPerformed(ActionEvent actionEvent) {
adaptee.jMenuHelpAbout_actionPerformed(actionEvent);}}}

解决方案 »

  1.   

    package jvideosystem;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;
    import javax.media.*;public class JVideoPlayerFrame extends JFrame
    {
        JPanel contentPane;    BorderLayout borderLayout1 = new BorderLayout();    JMenuBar jMenuBar1 = new JMenuBar();    JMenu jMenuFile = new JMenu();    JMenuItem jMenuFile_open = new JMenuItem();    JMenu jMenuPlay = new JMenu();    JMenuItem jCheckBoxMenuItem_loop = new JMenuItem();    JLabel jLabel1 = new JLabel();    JPanel jPanelVideo = new JPanel();    BorderLayout borderLayout2 = new BorderLayout();    JMenuItem jMenuFile_exit = new JMenuItem();    JMenu jMenuHelp = new JMenu();    JMenuItem jMenuHelp_about = new JMenuItem();    Player player;    Component visualcom, controlcom;    boolean first = true;    boolean loop = false;    String currentDirectory;    FileDialog fd;    public JVideoPlayerFrame()
        {
            try
            {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception)
            {
                exception.printStackTrace();
            }
        }    private void jbInit() throws Exception
        {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(borderLayout1);
            setSize(new Dimension(400, 300));
            setTitle("Java音频播放器");
            this.addWindowListener(new JVideoPlayerFrame_this_windowAdapter(this));
            jMenuFile.setText("文件");
            jMenuFile_open.setText("打开");
            jMenuFile_open
                    .addActionListener(new JVideoPlayerFrame_jMenuFileExit_ActionAdapter(
                            this));
            jMenuPlay.setText("播放");
            jCheckBoxMenuItem_loop.setText("循环播放");
            jCheckBoxMenuItem_loop
                    .addActionListener(new JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(
                            this));
            jLabel1.setOpaque(true);
            jLabel1.setToolTipText("状态栏");
            jLabel1.setText("欢迎使用JAVA音频播放器@计算机013班02号张南");
            jPanelVideo.setLayout(borderLayout2);
            jPanelVideo.setToolTipText("播放窗口");
            jMenuFile_exit.setText("退出");
            jMenuHelp.setText("帮助");
            jMenuHelp_about.setText("关于");
            jMenuFile_exit
                    .addActionListener(new JVideoPlayerFrame_jMenuFile_exit_actionAdapter(
                            this));
            jCheckBoxMenuItem_loop
                    .addActionListener(new JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(
                            this));
            jMenuHelp_about
                    .addActionListener(new JVideoPlayerFrame_jMenuHelp_about_actionAdapter(
                            this));
            jMenuBar1.add(jMenuFile);
            jMenuFile.add(jMenuFile_open);
            jMenuFile.add(jMenuFile_exit);
            jMenuBar1.add(jMenuPlay);
            jMenuBar1.add(jMenuHelp);
            jMenuPlay.add(jCheckBoxMenuItem_loop);
            contentPane.add(jLabel1, java.awt.BorderLayout.SOUTH);
            contentPane.add(jPanelVideo, java.awt.BorderLayout.CENTER);
            jMenuHelp.add(jMenuHelp_about);
            setJMenuBar(jMenuBar1);
        }    void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent)
        {
    //        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();
        }    void this_windowClosed(WindowEvent e)
        {
            System.exit(0);
        }    void this_windowClosing(WindowEvent e)
        {
            dispose();
        }    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;
    //            first = false;
    //            this.setTitle("播放文件位置" + fd.getDirectory() + fd.getFile());
    //            player.prefetch();
            }
        }
      

  2.   

    public void controllerUpdate(ControllerEvent e)
        {
            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();
            }
        }    void jMenuFile_exit_actionPerformed(ActionEvent e)
        {
            dispose();
            return;
        }    void jCheckBoxMenuItem_loop_actionPerformed(ActionEvent e)
        {
            loop = !loop;
        }    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();
        }    class JVideoPlayerFrame_jMenuHelp_about_actionAdapter implements
                ActionListener
        {
            private JVideoPlayerFrame adaptee;        JVideoPlayerFrame_jMenuHelp_about_actionAdapter(
                    JVideoPlayerFrame adaptee)
            {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent e)
            {
                adaptee.jMenuHelp_about_actionPerformed(e);
            }
        }    class JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter implements
                ActionListener
        {
            private JVideoPlayerFrame adaptee;        JVideoPlayerFrame_jCheckBoxMenuItem_loop_actionAdapter(
                    JVideoPlayerFrame adaptee)
            {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent e)
            {
                adaptee.jCheckBoxMenuItem_loop_actionPerformed(e);
            }
        }    class JVideoPlayerFrame_jMenuFile_exit_actionAdapter implements
                ActionListener
        {
            private 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 WindowAdapter
        {
            private JVideoPlayerFrame adaptee;        JVideoPlayerFrame_this_windowAdapter(JVideoPlayerFrame adaptee)
            {
                this.adaptee = adaptee;
            }        public void windowClosed(WindowEvent e)
            {
                adaptee.this_windowClosed(e);
            }        public void windowClosing(WindowEvent e)
            {
                adaptee.this_windowClosing(e);
            }
        }    class JVideoPlayerFrame_jMenuFileExit_ActionAdapter implements
                ActionListener
        {
            JVideoPlayerFrame adaptee;        JVideoPlayerFrame_jMenuFileExit_ActionAdapter(JVideoPlayerFrame adaptee)
            {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent actionEvent)
            {
                adaptee.jMenuFile_open_actionPerformed(actionEvent);
            }
        }    class JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter implements
                ActionListener
        {
            JVideoPlayerFrame adaptee;        JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(JVideoPlayerFrame adaptee)
            {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent actionEvent)
            {
                adaptee.jMenuHelpAbout_actionPerformed(actionEvent);
            }
        }
    }
      

  3.   

    jCheckBoxMenuItem_loop.setText("循环播放");
            jCheckBoxMenuItem_loop
                    .addActionListener(new JVideoPlayerFrame_jMenuHelpAbout_ActionAdapter(
                            this)); // 命令 ActionListener .加错了。 你给 Loop MenuItem 添加了  MenuHelpAbout 动作。