Olá pessoal, a dúvida é a seguinte, eu tenho o código, postado abaixo, que apresenta uma Logo do Jogo e uma barra de carregamento/progresso.
O que quero fazer e sincronizar uma música de fundo enquanto a barra de progresso carrega…
A barra de progresso está funcionando e o tocar da musica tbem… Só que ao colocar a musica nesse código, ele faz o seguinte: toca a música primeiro depois que carrega
a barra.
Teria como fazer isso simultaneamente(Tocar a musica enquanto a barra carrega)?
Teria que ter 2 Thread, uma para a Barra, já existe, e uma outra para tocar a Música?
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package logo;
import java.awt.Color;
import java.awt.Dimension;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
import jogodaforcacliente.DatagramClient;
import org.netbeans.lib.awtextra.AbsoluteConstraints;
import org.netbeans.lib.awtextra.AbsoluteLayout;
/**
*
* @author Diego Oliveira Froes
*/
public class Logotipo extends JWindow {
AbsoluteLayout absoluto;
AbsoluteConstraints absimagem, absbarra;
ImageIcon imagem;
JLabel labelImg;
JProgressBar barra;
@SuppressWarnings("CallToThreadStartDuringObjectConstruction")
public Logotipo() {
absoluto = new AbsoluteLayout();
absimagem = new AbsoluteConstraints(0, 0);
absbarra = new AbsoluteConstraints(0, 320);
labelImg = new JLabel();
imagem = new ImageIcon(this.getClass().getResource("../imagens/forca.png"));
labelImg.setIcon(imagem);
barra = new JProgressBar();
barra.setPreferredSize(new Dimension(575, 15));
barra.setBackground(Color.DARK_GRAY);
this.getContentPane().setLayout(absoluto);
this.getContentPane().add(labelImg, absimagem);
this.getContentPane().add(barra, absbarra);
new Thread() {
@Override
@SuppressWarnings("SleepWhileInLoop")
public void run() {
playLogoMusic();
int i = 0;
while (i < 101) {
barra.setValue(i);
i++;
try {
sleep(30);
} catch (InterruptedException ex) {
Logger.getLogger(Logotipo.class.getName()).log(Level.SEVERE,
null, ex);
}
}
setVisible(false);
//DatagramClient dC = new DatagramClient();
//dC.cliente();
}
}.start();
this.pack();
this.setVisible(true);
}
public static void playLogoMusic() {
try {
java.io.InputStream in = (java.io.InputStream) (new java.io.FileInputStream("c:\\music.mp3"));
javazoom.jl.player.Player p = new javazoom.jl.player.Player(in);
p.play();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
new Logotipo();
}
}