如何将音乐添加到JFrame?

时间:2013-06-01 00:54:24

标签: java audio jframe

import java.awt.*;
import javax.swing.*;

public class TestFrame1 {
    public static void main(String[] args) {

        JFrame frame = new JFrame("Test Frame 1");
        frame.setSize(200, 100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

我需要一些帮助才能将音乐添加到jframe中。我一直在寻找一个好的教程,但似乎都没有。

即时通讯使用netbeans。这是我目前的代码。我只想暂时将音乐添加到帧中没有停止按钮。谢谢。

2 个答案:

答案 0 :(得分:3)

尝试:

public static void playSong(URL media) {
    Player mediaPlayer = Manager.createRealizedPlayer(media);
    mediaPlayer.start()
}

所以你应该能够调用该方法并将URL传递给媒体,然后它应该播放(注意:我没有测试过这段代码)。

您需要的输入是:

import javax.media.Player;
import java.net.URL;

我记得,你需要将JMF .jar添加到你的项目中。 JMF(Java媒体框架)具有播放音乐和(我认为)视频等工具。

以下是来自IBM的非常广泛的教程:http://www.ibm.com/developerworks/java/tutorials/j-jmf/

在底部,它有关于安装JMF的说明,然后在下一页显示如何制作基本音频。

更多建议:

1)你需要添加mp3插件来播放来自JMF的mp3。将.jar文件中的插件添加到项目后,这是您要添加的代码(我是从内存中执行此操作,因此可能是错误的):

    Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
    Format input2 = new AudioFormat(AudioFormat.MPEG);
    Format output = new AudioFormat(AudioFormat.LINEAR);
    PlugInManager.addPlugIn(
        "com.sun.media.codec.audio.mp3.JavaDecoder",
        new Format[]{input1, input2},
        new Format[]{output},
        PlugInManager.CODEC
    );

2)我最后一次使用它时,oracle网站上的JMF下载链接被破坏了(它链接到了错误的页面),所以你可能需要搜索google上的链接。

答案 1 :(得分:2)

看看Accessing Audio System Resources。以下是可用的课程

Class              Format
---------------------------------------------
AudioSystem        WAV
Manager*           MP3     
MidiSystem         Midi

javax.media.Manager需要Java Media Framework

最简单的选项是AudioSystemMidiSystem,他们不需要额外的JAR文件。以下是代码link

中的示例
public class LoopSound {

    public static void main(String[] args) throws Exception {
        URL url = new URL(
                          "http://pscode.org/media/leftright.wav");
        Clip clip = AudioSystem.getClip();
        // getAudioInputStream() also accepts a File or InputStream
        AudioInputStream ais = AudioSystem.getAudioInputStream( url );
        clip.open(ais);
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // A GUI element to prevent the Clip's daemon Thread 
                // from terminating at the end of the main()
                JOptionPane.showMessageDialog(null, "Close to exit!");
            }
        });
    }
}

要将音频与JFrame集成,只需在应用程序启动时调用Clip#loop即可。