Witam. Oto kod
import sun.audio.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
public class Audio
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
AudioFrame frame=new AudioFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class AudioFrame extends JFrame
{
public AudioFrame()
{
//Ustalenie rozmiaru okna
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension dim=kit.getScreenSize();
WIDTH=dim.width/2;
HEIGHT=dim.height/2;
this.setSize(WIDTH,HEIGHT);
this.setLocationByPlatform(true);
this.setTitle("Jaba-Audio");
AudioComponent component=new AudioComponent();
this.add(component);
}
public static int getW()
{
return WIDTH;
}
public static int getH()
{
return HEIGHT;
}
private static int WIDTH;
private static int HEIGHT;
}
class AudioComponent extends JComponent
{
public AudioComponent()
{
try
{
this.IMG=ImageIO.read(new File("jaba.jpg"));
}
catch(IOException e)
{
e.printStackTrace();
}
}
@Override public void paintComponent(Graphics g)
{
try
{
//Narysowanie Jaby
g.drawImage(this.IMG,0,0,AudioFrame.getW(),AudioFrame.getH(),null);
//Odtworzenie dzwieku
//Plik z dzwiekiem
File sound=new File("laught.wav");
if(!sound.exists())
{
System.out.println("Brak pliku");
System.exit(0);
}
InputStream stream=new FileInputStream(sound);
AudioStream audio=new AudioStream(stream);
AudioData data=audio.getData();
ContinuousAudioDataStream caudio=new ContinuousAudioDataStream(data);
AudioPlayer.player.start(caudio);
}
catch(IOException e)
{
e.printStackTrace();
}
}
private Image IMG;
}
Mam pytanie. Odtwarzam dzwiek w funkcji paintComponent bo nie mam pojecia jak to inaczej zrobic. Jak łatwo sie domyślić nie jest to idealne rozwiązanie. Możecie dać mi jakieś wskazówki? Dziękuje.