I'm trying to build a project for an intro to java class where you have a library that you can add to and play music, kind of like a dumbed down iTunes. Unfortunately, after solving all of the syntax errors, I'm now getting one runtime when I open the savefiledialog. It won't show me files, only folders.
Here's my code:
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;
public class JPlayer extends JFrame implements ActionListener {
JButton save, play, stop, loop;
JFileChooser dialog;
JTable table;
String Artist, Song, Album, Loc;
Object[][] data;
int n = 1;
JLibrary[] addedSong = new JLibrary[50];
public JPlayer() {
super ("JPlayer");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("jPlayer");
this.setSize(800, 600);
String[] columnNames = {"Artist",
"Song",
"Album",
"Location"};
addedSong[0] = new JLibrary ("Rick Astley", "NGGYU", "UnKnown", "C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav");
Object[][] data = {
{
(addedSong[0].returnArtist()), (addedSong[0].returnSong()), (addedSong[0].returnAlbum()), (addedSong[0].returnFile())
}
};
table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
table.setAutoCreateRowSorter(true);
JScrollPane scrollPane = new JScrollPane(table);
dialog = new JFileChooser();
play = new JButton ("Play Song");
save = new JButton ("Save a file");
save.addActionListener(this);
play.addActionListener(this);
JPanel buttons = new JPanel();
buttons.add(save);
buttons.add(play);
add(buttons, BorderLayout.SOUTH);
add(scrollPane);
this.setVisible(true);
}
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;
}
}
Any help would be appreciated, as I'm pretty new to this:)