Hallo,
Ich hab einen kleinen MP3 Player, dieser zeigt mir an welche .mp3 Datein in einen Pfad befinden. Und wenn man einen Eintrag Abspielt spielt er den Song ab.
Ich möchte nun das er mir erst anzeigt welche Ordner sich in diesem Pfad befinden und dann beim klicken auf einen dieser eingetragenen Ordner erst anzeigt welche .mp3 Datein sich dort drinne befinden !!! Vllt auch in einer 2ten JList (z.B. Links die Ordner und rechts die sich darin befindenen Datein oder so ^^)
(Aber andere Verbesserungsvorschläge nehme ich auch gerne an ;-) )
Hier meine App:
[Java]
import java.awt.BorderLayout;
import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.BorderFactory;
import javazoom.jl.player.Player;
public class MP3Player extends JFrame implements ListSelectionListener {
// Anfang Attribute
private File[] mp3Files;
private File directory;
private JList mp3List;
private Player player;
// Ende Attribute
public MP3Player() {
this.directory = new File("sounds/");
if (!directory.isDirectory()) {
System.err.println("Dies ist kein Verzeichnis: " + directory);
}
this.setTitle("MP3 Player");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setSize(600, 300);
this.setLayout(new BorderLayout());
mp3Files = readDirectory();
mp3List = new JList(mp3Files);
mp3List.setSelectedIndex(0);
mp3List.setBorder(BorderFactory.createTitledBorder("Your Musik: "));
mp3List.addListSelectionListener(this);
JScrollPane scroll = new JScrollPane(mp3List);
this.add(scroll, BorderLayout.CENTER);
this.validate();
this.setVisible(true);
// Anfang Komponenten
// Ende Komponenten
}
// Anfang Methoden
private File[] readDirectory() {
File[] files = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File currentFile) {
return currentFile.getName().toLowerCase().endsWith(".mp3");
}
});
return files;
}
public static void main(String[] args) {
new MP3Player();
}
@Override
public void valueChanged(ListSelectionEvent e) {
File mp3ToPlay = new File(mp3List.getSelectedValue().toString());
this.play(mp3ToPlay);
}
private void play(File mp3) {
try {
BufferedInputStream input = new BufferedInputStream(new FileInputStream(mp3));
player = new Player(input);
} catch (Exception e) {
System.out.println("Error: "+e);
}
Thread playInBackground = new Thread() {
public void run() {
try {
player.play();
player.close();
} catch (Exception e) {
System.out.println(e);
}
}
};
playInBackground.start();
}
// Ende Methoden
}
[/Java]
Ich hab einen kleinen MP3 Player, dieser zeigt mir an welche .mp3 Datein in einen Pfad befinden. Und wenn man einen Eintrag Abspielt spielt er den Song ab.
Ich möchte nun das er mir erst anzeigt welche Ordner sich in diesem Pfad befinden und dann beim klicken auf einen dieser eingetragenen Ordner erst anzeigt welche .mp3 Datein sich dort drinne befinden !!! Vllt auch in einer 2ten JList (z.B. Links die Ordner und rechts die sich darin befindenen Datein oder so ^^)
(Aber andere Verbesserungsvorschläge nehme ich auch gerne an ;-) )
Hier meine App:
[Java]
import java.awt.BorderLayout;
import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.BorderFactory;
import javazoom.jl.player.Player;
public class MP3Player extends JFrame implements ListSelectionListener {
// Anfang Attribute
private File[] mp3Files;
private File directory;
private JList mp3List;
private Player player;
// Ende Attribute
public MP3Player() {
this.directory = new File("sounds/");
if (!directory.isDirectory()) {
System.err.println("Dies ist kein Verzeichnis: " + directory);
}
this.setTitle("MP3 Player");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setSize(600, 300);
this.setLayout(new BorderLayout());
mp3Files = readDirectory();
mp3List = new JList(mp3Files);
mp3List.setSelectedIndex(0);
mp3List.setBorder(BorderFactory.createTitledBorder("Your Musik: "));
mp3List.addListSelectionListener(this);
JScrollPane scroll = new JScrollPane(mp3List);
this.add(scroll, BorderLayout.CENTER);
this.validate();
this.setVisible(true);
// Anfang Komponenten
// Ende Komponenten
}
// Anfang Methoden
private File[] readDirectory() {
File[] files = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File currentFile) {
return currentFile.getName().toLowerCase().endsWith(".mp3");
}
});
return files;
}
public static void main(String[] args) {
new MP3Player();
}
@Override
public void valueChanged(ListSelectionEvent e) {
File mp3ToPlay = new File(mp3List.getSelectedValue().toString());
this.play(mp3ToPlay);
}
private void play(File mp3) {
try {
BufferedInputStream input = new BufferedInputStream(new FileInputStream(mp3));
player = new Player(input);
} catch (Exception e) {
System.out.println("Error: "+e);
}
Thread playInBackground = new Thread() {
public void run() {
try {
player.play();
player.close();
} catch (Exception e) {
System.out.println(e);
}
}
};
playInBackground.start();
}
// Ende Methoden
}
[/Java]