2014-11-19 3 views
-2

버튼을 누를 때마다 .wav 파일을 재생하려고합니다.스윙에서 사운드를 재생할 수 없습니다.

리소스를 프로젝트와 함께 작업 공간에 넣었습니다. 틀렸어?

[email protected] /home/fred/workspace/Projekt/src/GUI/sound/gangnam.wav java.lang.IllegalArgumentException가 :

는이 오류 메시지가 :

public static void main (String [] args) { 
    JFrame customBoardFrame = new JFrame("Custom Size."); 
    customBoardFrame.getContentPane().add(new customSize());  
    customBoardFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    customBoardFrame.setSize(450, 310); 
    customBoardFrame.setVisible(true); 
    customBoardFrame.setResizable(false); 
} 

: 잘못된 형식 여기

코드입니다

public class customSize extends JPanel implements ActionListener { 

    JButton playButton = new JButton(" >> PLAY <<"); 
    JButton stopButton = new JButton(" >> STOP <<"); 
    JButton pauseButton = new JButton(" >> PAUSE <<"); 

    public customSize(){ 

     setLayout(null); 

     playButton.setBounds(12, 173, 116, 40); 
     add(playButton); 

     playButton.addActionListener(this); 
     pauseButton.addActionListener(this); 
     stopButton.addActionListener(this); 

     stopButton.setBounds(140, 173, 117, 40); 
     add(stopButton); 

     pauseButton.setBounds(269, 173, 140, 40); 
     add(pauseButton); 

    } 

    public void actionPerformed(ActionEvent e){ 

     if (e.getSource().equals(playButton)) { 

      try { 
       String soundName = "gangnam.wav";  
       AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(soundName).getAbsoluteFile()); 
       System.out.println(audioInputStream); 
       System.out.println(new File (soundName).getAbsolutePath()); 
       Clip clip = AudioSystem.getClip(); 
       clip.open(audioInputStream); 
       clip.start(); 
      } catch (Exception e1) { 
       System.out.println("Error."); 
      } 

     } 
     if (e.getSource().equals(stopButton)) { 
      System.out.println("Stop music."); 
     } 
     if (e.getSource().equals(pauseButton)) { 
      System.out.println("Pause music."); 
     } 

    } 
} 
+1

변경 System.out.println ("오류."); e1.printStrackTrace(); 오류를 찾으십시오 –

+3

파일이 클래스와의 관계에 저장되어 있습니까? '널 (null) '레이아웃 사용을 피하십시오. 픽셀 완벽한 레이아웃은 현대적인 UI 디자인 내에서 환상입니다. 구성 요소의 개별 크기에 영향을주는 요소가 너무 많습니다. 어느 요소도 제어 할 수없는 요소가 너무 많습니다. 스윙은 핵심 레이아웃 관리자와 함께 작동하도록 설계되었으므로 이러한 문제를 해결하고 더 이상 시간을 낭비하지 않아도됩니다. – MadProgrammer

+1

.wav 파일이 프로젝트 루트 아래에 있는지 확인하십시오. 그리고 그것은 PCM wav 형식입니다. wav 파일을 jar 파일로 패키지하는 경우 e1.printStackTrace() 의 출력을 보내 주시면 대단합니다. 그래서 this.getClass(). getResourceAsStream ("gangnam.wav") –

답변

0

오디오 파일 형식을 확인하십시오. 시스템에서 지원하는 모든 형식은 javax.sound.sampled.AudioSystem.getAudioFileTypes()로 확인할 수 있습니다.

1

이 문제를 해결하기위한 첫 번째 단계는 수동으로 wav 파일 자체의 속성을 검사하는 것입니다. Windows에서는 속성을 마우스 오른쪽 단추로 클릭하고 선택할 수 있습니다. 그런 다음 비트 전송률 및 fps와 같은 기능을 가진 두 번째 탭이 있습니다.

Java는 44100 fps 및 16 비트 인코딩을 지원할 수 있습니다. 하지만 4800이나 96000 fps, 24 비트 또는 32 비트 인코딩에서 wav 파일을 생성하는 DAW가 있습니다. Java는 현재 AFAIK를 지원하지 않습니다.

이러한 파일이있는 경우 무료 다운로드 인 Audacity 프로그램을 사용하여 허용되는 형식 (스테레오, 16 비트, 44100fps)으로 쉽게 수정할 수 있습니다. 당신이 그들의 가정 사이트에서 그것을 얻는 것을 확인하십시오. 내가 다운로드 한 첫 번째 시간에는 Popuppalooza가 여러 시간 동안 나왔습니다. 그 때마다 함께 제공된 모든 사기 그릇을 없앨 수있었습니다. 홈 사이트 다운로드 (링크에 대한 위키피디아 참조)가 좋을 것입니다.

관련 문제