Zeitachse mit JSlider

Status
Nicht offen für weitere Antworten.

Rave

Bekanntes Mitglied
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:
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
 

Marco13

Top Contributor
Nur mal drübergescrollt, aber
ButtonPanel.add(jSlider);
sollte NICHT bei jeder Änderung gemacht werden, sondern nur EINmal...
 

Rave

Bekanntes Mitglied
Zeile 90 wäre ein guter Kandidat...

Der Kandidat sagt das hier :

Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1041)
at java.awt.Container.add(Container.java:365)
at MP3Player.<init>(MP3Player.java:90)
at MP3Player.main(MP3Player.java:168)

*fehlersuch* ^^ *hilfe gern annehm*
 

Rave

Bekanntes Mitglied
NPE ist weg !!! Doch wenn ich ein Lied starte bleibt der bei der standart Einstellung in der Mitte und bewegt sich net mit -.-

Da komm ich jetzt nich wirklich weiter
 

Rave

Bekanntes Mitglied
Aber ne Idee warum der nicht die Zeit anzeigt hat keiner oder ??? :-D

P.S. Wenn beide Recht haben ist das doch alles in Ordnung :-D
 

Marco13

Top Contributor
Schonn debug-Ausgaben versucht? Im Runnable mal ein
System.out.println("Hallo, ich werde aufgerufen!");
usw....
 

Rave

Bekanntes Mitglied
Schonn debug-Ausgaben versucht? Im Runnable mal ein
System.out.println("Hallo, ich werde aufgerufen!");
usw....

Ja hab ich wird nich angezeigt....also wenn ich das System.out... in die Methode Run() direkt reinschriebe gehts aber in den einzelnen Threads wird es nich mehr angezeigt !!!

(P.S. bin jetzt erst mal weg aber wenn euch was einfällt gerne hier posten ;-) )
 

Marco13

Top Contributor
*nochmal drüberschau* Was mit als ersten einfallen würde, wäre, dir mal zu Überlegen, was da wo ablaufen soll - im Moment sieht das mit den Threads schon ziemlich geraten aus....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JFreeChart - Value und veriable Zeitachse Java Basics - Anfänger-Themen 15
S JSlider und ChangeListener Java Basics - Anfänger-Themen 1
S OOP Zwei JSlider in einer Klasse Java Basics - Anfänger-Themen 2
Z JSlider - Text wird nich angezeigt Java Basics - Anfänger-Themen 0
S JSlider Schritt Größe Java Basics - Anfänger-Themen 5
F JSlider korrekt implementieren Java Basics - Anfänger-Themen 19
C Aktueller Wert von einem JSlider auf ein Label Java Basics - Anfänger-Themen 2
C JSlider und JRadioButton auf Label anzeigen? Java Basics - Anfänger-Themen 10
I Rückgabewert von JSlider Java Basics - Anfänger-Themen 15
V JSlider wird nicht angezeigt Java Basics - Anfänger-Themen 12
H Swing: JSlider wird nicht angezeigt Java Basics - Anfänger-Themen 5
G JSlider + Lautstärke Java Basics - Anfänger-Themen 10
S Graphic im Panel änder durch JSlider Java Basics - Anfänger-Themen 2
S Schieberegler (JSlider) funktioniert nicht Java Basics - Anfänger-Themen 5
K Farbenspiel mit dem jSlider Java Basics - Anfänger-Themen 5
? JSlider Java Basics - Anfänger-Themen 9
G JSlider Wert auslesen Java Basics - Anfänger-Themen 1
M ChangeListener Problem bei JSlider Java Basics - Anfänger-Themen 3
S undo auf JSlider Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben