如何给java窗口添加背景音乐?我已经写了窗口。

你好!很高兴为你解答。

首先,你打开这个登录窗口后,你要求它播放音乐。您可以在启动JFrame的主线程来构造和显示JFrame之后,创建一个名为this.playBgMusic()的新方法。

这里解释一下为什么告诉你在启动JFrame的主线程中调用这个方法,而不是在你的QQLoinFrame的构造函数中。原因是Swing的处理机制原理是用EventQueue实现的。可以说,如果你直接是单线程(主)处理程序,你会太依赖这个线程,这个线程也会过载。当你想启动一个播放音乐或者读写IO等耗时的线程时,可以尝试在构造函数中执行这个方法,你会发现你的Swing程序没有反应,要等一个线程处理完了才能继续显示。在这里,主线程被阻塞了,所以你的程序表面看起来一动不动,组件没有反应,这是因为它被阻塞了。这个问题的解决方法如下(这是其中一个,另一个可以自己查):

公共静态void main(String args[]) {

Java . awt . event queue . invoke later(new Runnable(){

公共无效运行(){

QQ log in QQ = new QQ log in();

this . play gmusic();

}

});

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

假设您启动JFrame的主要方法如下:

公共静态void main(String[] args) {

QQ log in QQ = new QQ log in();

this . play gmusic();

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *这个。Playbgmusic()方法* * * * * * * * * *

/**

*播放背景音乐,调用PlaySound线程类。

/

public void play gmusic(){

PlaySound play = new PlaySound();

线程t =新线程(play);

t . start();

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

/**

*PlaySound线程类,其中,因为你要求不使用JMF,请选择。au或。wav格式。

/

公共类PlaySound实现Runnable{

公共无效运行(){

尝试{

音频剪辑音频;

URL url = null

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

URI uri = music file . touri();

URL = uri . tourl();

audio = applet . newaudioclip(URL);

音频.播放();

} catch(malformedurexception ex){

logger . get logger(playmsgsound . class . getname())。日志(级别。严重,空,例如);

}

}

}