Воспроизвожу звук таким образом:
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class Music implements Runnable {
public Clip clip1;
public Clip clip2;
public Clip clip3;
public void run(){
while (true) {
try {
File soundFile = new File("MenuMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip1 = AudioSystem.getClip();
clip1.open(ais);
FloatControl vc = (FloatControl) clip1.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip1.setFramePosition(0);
clip1.start();
Thread.sleep(clip1.getMicrosecondLength() / 1000);
clip1.stop();
clip1.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_2(){
while (true) {
try {
File soundFile = new File("WindowsMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip2 = AudioSystem.getClip();
clip2.open(ais);
FloatControl vc = (FloatControl) clip2.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip2.setFramePosition(0);
clip2.start();
Thread.sleep(clip2.getMicrosecondLength() / 1000);
clip2.stop();
clip2.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_3(){
while (true) {
try {
File soundFile = new File("");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip3 = AudioSystem.getClip();
clip3.open(ais);
clip3.setFramePosition(0);
clip3.start();
Thread.sleep(clip3.getMicrosecondLength() / 1000);
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
}
Класс Frame:
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class Music implements Runnable {
public Clip clip1;
public Clip clip2;
public Clip clip3;
public void run(){
while (true) {
try {
File soundFile = new File("MenuMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip1 = AudioSystem.getClip();
clip1.open(ais);
FloatControl vc = (FloatControl) clip1.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip1.setFramePosition(0);
clip1.start();
Thread.sleep(clip1.getMicrosecondLength() / 1000);
clip1.stop();
clip1.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_2(){
while (true) {
try {
File soundFile = new File("WindowsMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip2 = AudioSystem.getClip();
clip2.open(ais);
FloatControl vc = (FloatControl) clip2.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip2.setFramePosition(0);
clip2.start();
Thread.sleep(clip2.getMicrosecondLength() / 1000);
clip2.stop();
clip2.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_3(){
while (true) {
try {
File soundFile = new File("");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip3 = AudioSystem.getClip();
clip3.open(ais);
clip3.setFramePosition(0);
clip3.start();
Thread.sleep(clip3.getMicrosecondLength() / 1000);
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
}
Это в отдельном классе. Там же у меня несколько других звуков. Так вот, нужно что бы эти звуки можно было воспроизводить при нажатии на кнопку. При первом нажатии всё срабатывает, но затем, пока не закончится воспроизведение, нажатия на другие кнопки не считываются. Скорее всего это из-за потока, но я не совсем понимаю, как это работает, кто может подсказать?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости