한 번에 하나의 오디오 파일을 재생하는 방법은 무엇입니까?한 번에 하나의 오디오 파일 재생
그래서 여러 개의 버튼이있는 GUI를 만들었으며 각 버튼마다 액션 리스너가 첨부되었습니다. 버튼을 누르면 오디오 파일 (.wav)이 재생됩니다. 이것은 잘 작동합니다. 문제는 내가 한 번에 하나의 파일 만 재생하므로 소리가 겹치지 않아서 무엇을 해야할지 모르겠다는 것입니다.
스레딩 및 동기화를 사용해야합니까? 모든 조언은 대단히 감사하겠습니다.
클래스 변수로 선언
편집
:String soundName;
AudioInputStream audioInputStream;
Clip clip;
의 ActionListener :
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==buttonOne){
soundName = "messageOne.wav";
}else if(e.getSource()==buttonTwo){
soundName = "messageTwo.wav";
}else if(e.getSource()==buttonThree){
soundName = "messgaeThree.wav";
}else if(e.getSource()==buttonFour){
soundName = "messageFour.wav";
}
try {
audioInputStream = AudioSystem.getAudioInputStream(new File(soundName).getAbsoluteFile());
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
try {
clip = AudioSystem.getClip();
} catch (LineUnavailableException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
try {
clip.open(audioInputStream);
} catch (LineUnavailableException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
clip.start();
}
수행 할 경로가 많이 있습니다. 하나는 모든 버튼에 의해 사용되는 하나의 'Clip' 인스턴스 만 가지는 것입니다. –
@AndrewThompson, 좀 더 자세히 설명해 주시겠습니까? – Student
예, 할 수 있습니다. 당신이 이해하지 못하는 것에 대한 세부 사항을 제공 할 수 있습니까? –