2011-06-30 7 views
0

のリストを返す:I want to make a java program in which there is a combobox which displays the titles of all the files available in a folderこの質問に答えるには、オーディオファイルタイプ

私の注意に持って来られた答えを実装する別の方法。 AudioSystem.getAudioFileTypes()を使用して、指定されたフォルダ内のすべてのサポートされているオーディオファイルを返します。私はかなり経験の浅いコーダだし、私の与えられた答えに、この方法を統合することができません

File someFolder = new File("pathname"); 

Object[] wavFiles = someFolder.listFiles(wavExtensionFilenameFilter); 
JComboBox songComboBox = new JComboBox(wavFiles); 

誰でもこれが行われることになるか私を見ることができますか?

答えて

4

次のソースは、Java Soundが理解できるファイルタイプに固有のJFileChooserを示します。ユーザーが任意のサウンドクリップを選択すると、アプリケーションが起動します。そのディレクトリ内のすべてのクリップのリストを取得し、コンボで表示します。コンボからクリップを選択するには

Sound clip list

。、我々はplay the sound in a javax.sound.sample.Clip(JavaのサウンドAPIを使用して他の方法または)、代わりに私たちは選ぶことができます。 Desktopを使用してファイルを開く(システムのデフォルトプレイヤーで)1.6+「ワンライナー」の場合

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import javax.sound.sampled.*; 
import java.io.*; 

class GetSoundsByFileType { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       AudioFileFormat.Type[] formatTypes = AudioSystem.getAudioFileTypes(); 
       String[] types = new String[formatTypes.length]; 
       for(int ii=0; ii<types.length; ii++) { 
        types[ii] = formatTypes[ii].getExtension(); 
       } 

       FileTypesFilter fileTypesFilter = new FileTypesFilter(types); 
       // Just to confuse things, JFileChooser accepts a 
       // different type of filter! 
       FileNameExtensionFilter extensionFilter = 
        new FileNameExtensionFilter("Sound clips", types); 
       JFileChooser fc = new JFileChooser(); 
       fc.setAcceptAllFileFilterUsed(false); 
       fc.addChoosableFileFilter(extensionFilter); 

       int result = fc.showOpenDialog(null); 
       if (result==JFileChooser.APPROVE_OPTION) { 
        File startAt = fc.getSelectedFile(); 

        startAt = startAt.getParentFile(); 
        File[] files = startAt.listFiles(fileTypesFilter); 

        final JComboBox clipCombo = new JComboBox(files); 
        clipCombo.addActionListener(new ActionListener(){ 
          // 1.6+ 
          Desktop desktop = Desktop.getDesktop(); 

          public void actionPerformed(ActionEvent ae) { 
           try { 
            desktop.open((File)clipCombo.getSelectedItem()); 
           } catch(Exception e) { 
            e.printStackTrace(); 
           } 
          } 
         }); 

        JOptionPane.showMessageDialog(null, clipCombo); 
       } 
      } 
     }); 
    } 
} 

class FileTypesFilter implements FilenameFilter { 

    private String[] types; 

    FileTypesFilter(String[] types) { 
     this.types = types; 
    } 

    public boolean accept(File dir, String name) { 
     for (String type:types) { 
      if (name.toLowerCase().endsWith(type.toLowerCase())) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 
+0

私は、私が私の答えがほんの数行しか残さず、AudioSystem.getAudioFileTypes()を実装できると思っていたと付け加えたいと思います。詳細な応答をありがとう、それは非常に物事を明確にしています:) –

+0

'いくつかのライン'の答えは、私はあなたの最終的な答えは良かったと思います。 OTOHこれはファイル選択機能を備えた自己完結型の例で、73行しかありません! ;) –

関連する問題