Swing jSlider soll selber weiterwandern, je nach zeit der musik

Ich habe einen Slider entworfen mit dem man schon vor und zurückspulen kann im musikstück. und auch das musikstück spielt dann die richtige stelle ab.

Doch wenn ich den zeiger am slider nicht anfasse sollte er von alleine wandern, jenachdem bei welcher sekunde gerade das musikstück ist. Aber ich steh auf dem schlauch, wie ich das hinbekommen soll.

Java:
         final JLabel ende = new JLabel();
         final JSlider slider1 = new JSlider(0,0,0);// Von,bis,anfangsposition
         slider1.setBorder(null);
         slider1.setPaintTicks(false);
         slider1.setPaintLabels(false);
         slider1.setOpaque(false);

      // Register a change listener
         slider1.addChangeListener(new ChangeListener()
         {
             // This method is called whenever the slider's value is changed
        	 public void stateChanged(ChangeEvent evt) 
             {
                 JSlider slider = (JSlider)evt.getSource();
                 if (!slider.getValueIsAdjusting()) 
                 {
                     // Get new value
                     long value = (long)slider.getValue();
                     musik.setPositionInMikrosekunden(value*1000000);
                 }
             }
         });
/***********************************/

// weiter unen im code wenn man den button play drückt

button[0].addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e)
            {
            	musik = new Sound("D:/AA-Kino/Takedown.wav");
            	sec = musik.getLaengeInSekunden();
            	slider1.setMaximum(sec);
            	setStdMinSek(sec);
            	ende.setText(""+std+":"+min+":"+sec);
            	musik.play();
            }
        });
 

GUI-Programmer

Top Contributor
Du brauchst einen [JAPI]http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html[/JAPI], der dann jede Zeiteinheit (z.B. alle Millisekunden oder alle 10 Millisekunde (besser)) abfrag, wie weit die Musik ist und danach den JSlider den Wert setzt. Allerdings müsstest du bei deinem jetzigen Code da unbedingt noch ein Flag einbauen, dass wenn der Wert von deinem Timer geändert wurde, die Musik nicht verändert wird, also:
Java:
// changeFromTimer ist eine Klassenvariable vom Typ boolean
// Beide folgende Codeteile müssen Zugriff auf diese haben - kann (und sollte) auch über
// Getter und Setter erfolgen - hier direkter Zugriff

// In der stateChanged des JSliders
if(!changeFromTimer) {
    // Get new value
    long value = (long)slider.getValue();
    musik.setPositionInMikrosekunden(value*1000000);
}

// In der actionPerformed des Timers:
changeFromTimer = true;
deinSlider.setValue(derErrechneteWert);
changeFromTimer = false;
 
ja hmm soweit so gut. Aber entweder mach ich nochwas falsch oder aber.... die musik ruckel in dem moment wo der pfiel des sliders sich neu setzt.
Java:
// Schieberegler für Musikposition erstellen
         final JSlider slider1 = new JSlider(0,0,0);// Von,bis,anfangsposition
        // slider1.setAlignmentX(Component.RIGHT_ALIGNMENT);
        // slider1.setPaintTrack( false );
         //slider1.setPreferredSize(new Dimension(400, 60));
         slider1.setBorder(null);
         slider1.setPaintTicks(false);
         slider1.setPaintLabels(false);
         slider1.setOpaque(false);
         
      // Register a change listener
         slider1.addChangeListener(new ChangeListener()
         {
             // This method is called whenever the slider's value is changed
        	 public void stateChanged(ChangeEvent evt) 
             {
                 JSlider slider = (JSlider)evt.getSource();
                 if (!slider.getValueIsAdjusting()) 
                     musik.setPositionInMikrosekunden((long)slider.getValue()*1000000);
                 
                // egal ob true oder false es ruckelt
                 if(!changeFromTimer) 
                	 musik.setPositionInMikrosekunden((long)slider.getValue()*1000000);
                
             }
         });

         ActionListener taskPerformer = new ActionListener() {
             public void actionPerformed(ActionEvent evt)
             {
            	 changeFromTimer = true;
            	 slider1.setValue(slider1.getValue()+1);
            	 //System.out.println("Wert: " + slider1.getValue());
            	 changeFromTimer = false;
             }
         };
         new Timer(1000, taskPerformer).start();

weiter unten ausserhalb dieser klasse

Java:
 boolean changeFromTimer = false;
    private void setChanger()
    {
    	if (changeFromTimer == false)
    		changeFromTimer = true;
    	else
    		changeFromTimer = false;
    }
    private boolean getChanger()
    {
    	return changeFromTimer;
    }
 
Zuletzt bearbeitet:
okay hab es soweit hinbekommen, aber was nun aufgetaucht ist, ist folgendes. wenn ich den zeiger anfasse mit der mouse und ihn hin und herschiebe aber noch nicht loslasse und somit die musik ja noch an der alten stelle spielen müsste und erst dann auf die neue wechseln sollte wenn man loslässt. (ja das geht auch) aber während des ziehens ruckelt die musik und versucht sich schon der neuen stell anzupassen BEVOR ich die mouse wieder losgelassen habe. wie kann ich das verhindern?
Java:
 slider1.addChangeListener(new ChangeListener()
         {
             // This method is called whenever the slider's value is changed
        	 public void stateChanged(ChangeEvent evt) 
             {
                 JSlider slider = (JSlider)evt.getSource();
// dieser befehl war überflüssig
              /*  if (!slider.getValueIsAdjusting()) 
                     musik.setPositionInMikrosekunden((long)slider.getValue()*1000000);*/
                 
                 if(!getChanger()) 
                	 musik.setPositionInMikrosekunden((long)slider.getValue()*1000000);
                
             }
         });
         
         final ActionListener taskPerformer = new ActionListener() {
             public void actionPerformed(ActionEvent evt)
             {
            	 setChanger(); // true
            	 slider1.setValue(musik.getPositionInSekunden());
            	// System.out.println("Wert: " + slider1.getValue() + "position"+ musik.getPositionInSekunden());
            	 setChanger(); // false
             }
         };
 
ja manchmal sollte man eine Nacht darüber schlafen, wenn man schon STuden vor dem Probelm saß. Kalppt jetzt alles wuder bar danke. Hab es so geändert (für alle anderen die hier mitlesen)

PHP:
  if(!getChanger() && !slider.getValueIsAdjusting()) 
                	 musik.setPositionInMikrosekunden((long)slider.getValue()*1000000);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Swing JSlider Tip Anzahl AWT, Swing, JavaFX & SWT 3
J JSlider sichtbar AWT, Swing, JavaFX & SWT 7
J Swing JSlider - Form des Reglers AWT, Swing, JavaFX & SWT 6
J JSlider Color Ticks AWT, Swing, JavaFX & SWT 1
J JSlider - MajorTick AWT, Swing, JavaFX & SWT 0
Z JSlider im Modalen-Fenster AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
A Slider (JSlider?) AWT, Swing, JavaFX & SWT 7
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
A Swing JSlider erscheint doppelt AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
A Swing Bestimmte Werte anzeigen JSlider() AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
M JSlider-Wert ändern, ohne ein ChangeEvent auszulösen AWT, Swing, JavaFX & SWT 4
C Aussehen von JSlider ändern AWT, Swing, JavaFX & SWT 7
D JSlider und Textfeld AWT, Swing, JavaFX & SWT 2
C Swing Tickspacing in JSlider AWT, Swing, JavaFX & SWT 3
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
T jSlider-Value als Float in jLabel ausgeben AWT, Swing, JavaFX & SWT 2
O Swing JSlider mit doppelter Value AWT, Swing, JavaFX & SWT 6
F JSlider Design ändern AWT, Swing, JavaFX & SWT 6
D Swing JSlider AWT, Swing, JavaFX & SWT 11
B JSlider - Wert am Mouszeiger anzeigen lassen AWT, Swing, JavaFX & SWT 6
E JSlider synchron halten AWT, Swing, JavaFX & SWT 4
J Swing jSlider nur auf bestimmte werte beschränken AWT, Swing, JavaFX & SWT 15
X Audio Player: Fenster mit Play/Stop-Button erstellen, mit JSlider Lautstärke ändern AWT, Swing, JavaFX & SWT 6
R JSlider AWT, Swing, JavaFX & SWT 9
M Swing JSlider, Popup-Box AWT, Swing, JavaFX & SWT 3
J JSlider mit Double Werten AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
M Jslider Beschriftung AWT, Swing, JavaFX & SWT 6
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
E jSlider und ChangeListener AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
T Swing JSlider und Adjustment-Listener wollen nicht so recht AWT, Swing, JavaFX & SWT 2
O JSlider - wie unterscheide ich mit Maus verändert und durch setValue verändert. AWT, Swing, JavaFX & SWT 16
T JSlider: ChangeListener löst dreimal aus? AWT, Swing, JavaFX & SWT 4
B JSlider in JCombobox AWT, Swing, JavaFX & SWT 9
J JSlider wird nicht neugezeichnet AWT, Swing, JavaFX & SWT 8
J Einen JSlider ähnlich wie in OO3 AWT, Swing, JavaFX & SWT 5
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
K Unterschiedliches Aussehen der JSlider? AWT, Swing, JavaFX & SWT 4
I Listener für einen JSlider AWT, Swing, JavaFX & SWT 1
G beschriftung von JSlider AWT, Swing, JavaFX & SWT 7
H JSlider mit 2 Werten AWT, Swing, JavaFX & SWT 7
L JSlider Beschriftung AWT, Swing, JavaFX & SWT 1
A JSlider umdrehen AWT, Swing, JavaFX & SWT 15
D JSlider und JMF player verbinden AWT, Swing, JavaFX & SWT 6
J JSlider regaiert unter Java 1.6 nicht mehr AWT, Swing, JavaFX & SWT 7
N JSlider: Kosmetik - snapToTicks AWT, Swing, JavaFX & SWT 3
T JComponents abändern/modifizieren z.b. JSlider AWT, Swing, JavaFX & SWT 2
N Nicht linearer JSlider! AWT, Swing, JavaFX & SWT 4
T JSlider getValue() erst nach dem Loslassen des Mauszeigers AWT, Swing, JavaFX & SWT 3
Z JSlider-Knob wenden AWT, Swing, JavaFX & SWT 8
L JSlider stumm geworden? AWT, Swing, JavaFX & SWT 2
I JSlider - klick ignorieren AWT, Swing, JavaFX & SWT 4
I JSlider-Schieberegler AWT, Swing, JavaFX & SWT 7
T JSlider Schiebereglerbild ändern AWT, Swing, JavaFX & SWT 4
U JSlider - Probleme bei der Darstellung AWT, Swing, JavaFX & SWT 3
H ChangeListener für JSlider AWT, Swing, JavaFX & SWT 6
P JSlider automatisch bewegen AWT, Swing, JavaFX & SWT 3
G JSlider AWT, Swing, JavaFX & SWT 2
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Zeppi Swing Button soll Spiel zurücksetzen AWT, Swing, JavaFX & SWT 5
A Titelleiste soll Pfad ausgeben AWT, Swing, JavaFX & SWT 16
G Eintrag soll nur einmal in Listview zu sehen sein AWT, Swing, JavaFX & SWT 3
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
W JavaFX CSS - was soll mir das sagen? AWT, Swing, JavaFX & SWT 2
D JavaFX Menu soll nicht bei jedem Click verschwinden AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
M JavaFX StackedBarChart y-Axis soll nur Integerwerte anzeigen AWT, Swing, JavaFX & SWT 1
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
V Swing Button soll unter anderem Button sein AWT, Swing, JavaFX & SWT 2
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J JavaFX Tabelle soll ganze Seite ausfüllen AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben