1

我正在尝试构建一个类似于廉价 iTunes 的程序,但是当我尝试导入 .wav 文件时,它只显示文件夹,而不是文件本身。我三重检查了文件是否存在并且是 .wav,如果有人能告诉我,我不确定我是否正确放置了过滤器。

    //Andrew Douglas
    //Imports
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.sound.sampled.*;
    import javax.swing.filechooser.*;
    import javax.swing.JTable;


    //Creates class
    public class JPlayer extends JFrame implements ActionListener {

        //Sets up form items and necessary globals
        JButton save, play, stop, loop;
        JFileChooser dialog;
        JTable table;
        String Artist, Song, Album, Loc;
        Object[][] data;
        int n = 1;
        //Makes the library, with a 51 song limit.
        JLibrary[] addedSong = new JLibrary[50];

        public JPlayer() {
            super ("JPlayer");
            //Creates frame
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setTitle("jPlayer");
            this.setSize(800, 600);
            //Makes titles for table
            String[] columnNames =  {"Artist",
                                    "Song",
                                    "Album",
                                    "Location"};
            //Gives one value for array
            addedSong[0] = new JLibrary ("Rick Astley", "NGGYU", "UnKnown", "C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav");
            //Adds it to table array
            Object[][] data = {
            {
                (addedSong[0].returnArtist()), (addedSong[0].returnSong()), (addedSong[0].returnAlbum()), (addedSong[0].returnFile())
            }

            };
            //Creates table
            table = new JTable(data, columnNames);
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
            table.setFillsViewportHeight(true);
            //Lets it sort the rows
            table.setAutoCreateRowSorter(true);
            //Creates the scroller
            JScrollPane scrollPane = new JScrollPane(table);
            //Makes the save file dialog and the play and save buttons
            dialog = new JFileChooser();
            play = new JButton ("Play Song");
            save = new JButton ("Save a file");
            //Adds the button listeners
            save.addActionListener(this);
            play.addActionListener(this);
            //Adds buttons to panel
            JPanel buttons = new JPanel();
            buttons.add(save);
            buttons.add(play);
            //Puts the buttons at the bottom
            add(buttons, BorderLayout.SOUTH);
            add(scrollPane);
            this.setVisible(true);

        }
        //Creates action listener for button
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == save) {
                dialog.setFileFilter(new FileNameExtensionFilter("WAV File", ".wav"));
                int returnVal = dialog.showSaveDialog(JPlayer.this);
                if (returnVal == dialog.APPROVE_OPTION) {
                    File file = dialog.getSelectedFile();
                    addToLibrary("", "", "", file.getName());

                }
            }
            else if (e.getSource() == play) {
                String holder2;
                Object holder;
                holder = table.getValueAt(table.getSelectedRow(), 3);
                try {
                File soundFile = new File(holder.toString());
                AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
                Clip clip = AudioSystem.getClip();
                clip.open(audioIn);
                clip.start();
                } catch (UnsupportedAudioFileException f) {
             f.printStackTrace();
          } catch (IOException f) {
             f.printStackTrace();
          } catch (LineUnavailableException f) {
             f.printStackTrace();
          }

        } }
        public static void main(String[]args) {
            new JPlayer();
        }
        public void addToLibrary(String art, String song, String alb, String file) {
                addedSong[n] = new JLibrary(art, song, alb, file);
                int j = 0;
                while (n >= 0) {
                Object[][] data = {
                {
                    addedSong[(n-j)],
                }
            };
                j = j+1;
            }
                n = n +1;

        }

}

任何帮助,将不胜感激!:)

4

1 回答 1

4

wav,不是.wav

dialog.setFileFilter(new FileNameExtensionFilter("WAV File", "wav"));
于 2013-06-19T15:37:43.140 回答