Hallo,
Ich hab in meiner App einen JSlider dazu verwendet um mit dir Zeitachse während eine Mp3 Datei abgespielt wird anzeigen zu lassen.
Nur hab ich folgendes Problem, ich kann es zwar einwandfrei compilieren doch angezeigt wird mir nichts, der Thread wird nich richtig ausgeführt. Aber ich finde den fehler einfach nicht.
Hier der Code:
Das ist der relevante Ausschnitt
Ich hab in meiner App einen JSlider dazu verwendet um mit dir Zeitachse während eine Mp3 Datei abgespielt wird anzeigen zu lassen.
Nur hab ich folgendes Problem, ich kann es zwar einwandfrei compilieren doch angezeigt wird mir nichts, der Thread wird nich richtig ausgeführt. Aber ich finde den fehler einfach nicht.
Hier der Code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JPanel.*;
import javax.swing.JMenuBar.*;
import javax.swing.JMenu.*;
import javax.swing.JMenuItem.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import javax.media.*;
import java.lang.Thread;
import javax.swing.JSlider;
public class MP3Player extends JFrame implements Runnable, ActionListener, KeyListener, MouseListener, TreeSelectionListener {
// Anfang Attribute
private File[] mp3Files;
private File directory;
private Player player;
private DefaultMutableTreeNode root;
private final TreeTablePanel treeTablePanel;
private final JTree tree;
private JPanel ButtonPanel;
private JSlider jSlider;
float laut=1.0f;
private JMenuBar bar = new JMenuBar();
private JMenu menu = new JMenu("Datei");
private JMenu menu1 = new JMenu("Hilfe");
private JMenuItem datei = new JMenuItem("Öffnen");
private JMenuItem beenden= new JMenuItem("Ende");
private JMenuItem readme= new JMenuItem("Read Me");
private JButton play = new JButton();
private JButton pause = new JButton();
private JButton lauter = new JButton();
private JButton leiser = new JButton();
private Thread refresherThread;
private Runnable runnable;
// Ende Attribute
public MP3Player() {
this.setTitle("MP3 Player");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(1050, 500);
this.setLocationRelativeTo(null);
this.directory = new File("music/");
if (!directory.isDirectory()) {
directory.mkdir();
System.err.println("Dies ist kein Verzeichnis: " + directory);
}
mp3Files = readDirectory();
// Anfang Komponenten
DefaultTreeModel model = new DefaultTreeModel(createTree(directory));
treeTablePanel = new TreeTablePanel(this, model, null);
treeTablePanel.setBorder(BorderFactory.createTitledBorder("Your Music: "));
tree = treeTablePanel.addTreeSelectionListener(this);
tree.setSelectionRow(1);
add(treeTablePanel, BorderLayout.CENTER);
JPanel ButtonPanel = new JPanel();
add(ButtonPanel, BorderLayout.SOUTH);
ButtonPanel.setPreferredSize(new Dimension(1,100));
menu.add(datei);
menu.add(beenden);
menu1.add(readme);
bar.add(menu);
bar.add(menu1);
this.setJMenuBar(bar);
play.setText("PLAY");
ButtonPanel.add(play);
pause.setText("PAUSE");
ButtonPanel.add(pause);
lauter.setText("+");
lauter.addActionListener(this);
ButtonPanel.add(lauter);
leiser.setText("-");
ButtonPanel.add(leiser);
this.setVisible(true);
addKeyListener(this);
addMouseListener(this);
lauter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
player.getGainControl().setLevel(100);
}
});
leiser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
player.getGainControl().setLevel(laut-0.5f);
}
});
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
player.start();
}
});
pause.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
player.stop();
}
});
laut = 1.0f;
// Ende Komponenten
}
// Anfang Methoden
public void actionPerformed(ActionEvent evt) {
}
// Thread für die Zeitleiste -----------------------------------------------
public void run() {
// refresh Thread
refresherThread = new Thread() {
{
setPriority(Thread.MIN_PRIORITY);
}
public void run() {
try {
while (runnable != null) {
SwingUtilities.invokeLater(runnable);
sleep(100);
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
};
//Runnable Thread
runnable = new Runnable() {
public void run() {
jSlider.setValue((int)player.getMediaTime().getSeconds());
ButtonPanel.add(jSlider);
}
};
}
// -------------------------------------------------------------------------
//...
Das ist der relevante Ausschnitt