當前位置:編程學習大全網 - 源碼下載 - java 窗口怎麽加背景音樂?我已經寫好窗口了

java 窗口怎麽加背景音樂?我已經寫好窗口了

妳好!很高興為妳解答。

首先,妳打開這個登錄窗口之後,妳要求它能夠播放音樂,妳就在妳啟動的JFrame主線程main構造並顯示完成JFrame後,新建壹個方法叫做this.playBgMusic();

這裏解釋壹下,為什麽叫妳在啟動JFrame主線程中調用這個方法而不是在妳的QQLoinFrame的構造方法中調用,原因是Swing的處理機制原理是利用EventQueue來執行的,可以說,如果妳直接new的話都是單線程(main)處理程序,這樣的話就會對這個線程依賴過大,而這個線程也負荷過大。當妳想啟動播放音樂或者IO讀寫之類的耗時線程時,妳可以試試在構造方法中執行這方法,妳將會發現妳的Swing程序沒反應,要等某線程處理完後才可以繼續顯示。這裏main線程阻塞,所以妳的程序表面看起來不動,組件沒反應,這就是因為阻塞掉了。解決這個問題的辦法就是如下(這是其中壹種,另壹種妳可以自行查找):

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

QQLogin qq = new QQLogin();

this.playBgMusic();

}

});

}

*********************************************正文********************************************************

假設,妳啟動JFrame的主方法如下:

public static void main(String[] args) {

QQLogin qq = new QQLogin();

this.playBgMusic();

}

*******************************************this.playBgMusic()方法*********************************************

/**

*播放背景音樂,調用PlaySound線程類

/

public void playBgMusic() {

PlaySound play = new PlaySound();

Thread t = new Thread(play);

t.start();

}

*******************************************PlaySound線程類********************************************

/**

*PlaySound線程類,其中,因為妳要求不使用JMF,所以,請選擇.au或者.wav格式吧

/

public class PlaySound implements Runnable{

public void run() {

try {

AudioClip audio;

URL url = null;

File musicFile = new File("msg.wav");

URI uri = musicFile.toURI();

url = uri.toURL();

audio = Applet.newAudioClip(url);

audio.play();

} catch (MalformedURLException ex) {

Logger.getLogger(PlayMsgSound.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

  • 上一篇:保定麻將有哪些打法?
  • 下一篇:Gpu驅動程序源代碼
  • copyright 2024編程學習大全網