簡體   English   中英

如何將音樂添加到JFrame?

[英]How do you add music to a 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。 這是我當前的代碼。 我現在只想將音樂添加到相框沒有停止按鈕。 謝謝。

嘗試:

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)上次使用它時,JMF下載鏈接在oracle網站上斷開了(它鏈接到錯誤的頁面),因此您可能不得不在Google上搜索該鏈接。

看一下訪問音頻系統資源 這是可用的課程

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

javax.media.Manager需要Java Media Framework

最簡單的選項是AudioSystemMidiSystem ,它們不需要其他JAR文件。 這是來自標記鏈接的示例

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM