0

我正在用 Java 制作一个简单的 MP3Player。我已经设法播放了一个 .mp3 文件,但是当我开始播放整个程序时,我会冻结,我无法单击程序中的任何按钮。在我开始播放后,我需要帮助使暂停按钮或任何其他按钮工作。这是我的代码:

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.InputStream;
    import java.net.URL;
    import javazoom.jl.player.advanced.AdvancedPlayer;
    import javax.swing.*;

    public class MP3Player extends JFrame{

    public MP3Player(){
        JPanel jpBottom = new JPanel();
        JButton btnPlay = new JButton("Play");
        JButton btnPause = new JButton("Pause");

        jpBottom.add(btnPause);
        jpBottom.add(btnPlay);

        Container cp = this.getContentPane();
        BorderLayout bl = new BorderLayout();
        cp.setLayout(bl);
        cp.add(jpBottom, BorderLayout.SOUTH);

        btnPlay.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        Play("file:///C://a.mp3");
                    }
                }
        );

        this.setVisible(true);
        this.setSize(250, 100);
        this.setTitle("MP3 Player");
        this.setLocation(100, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void Play(String path){
        try{
            URL url = new URL(path);
            InputStream in = url.openStream();
            //Player pl = new Player(in);
            //pl.play();
            AdvancedPlayer pl = new AdvancedPlayer(in);

            pl.getPlayBackListener();
            pl.play();             
        }
        catch(Exception e){
            System.out.println("Feil: "+e);
        }
    }

    public static void main(String[] args) {
        MP3Player n = new MP3Player();
    }
}
4

2 回答 2

1

Play()您应该在单独的线程中调用方法,并且对Swing 中的 Multithreding有很好的了解。至少你应该阅读SwingUtilities.invokeLater()

于 2012-05-26T10:50:09.010 回答
1

我需要帮助制作暂停按钮,..

暂停播放器的方法是stop()。但是该代码创建AdvancedPlayer了方法的本地。相反,该类需要声明一个属性并在方法 AdvancedPlayer中引用该类属性。actionPerformed()

于 2012-05-26T11:07:27.703 回答