Gå til innhold

JSlider endre ved ChangeListener kun ved museklikk


Anbefalte innlegg

Jeg bruker en tråd til å flytte JSlideren oppover i verdi etterhvert som sangen i mp3 spilleren min spilles av, men jeg har et problem når jeg ønsker å kunne dra JSlideren frem og tilbake for å endre tidspunkt i sangen.

 

	    trackTime.addChangeListener(new ChangeListener() {
	        public void stateChanged(ChangeEvent evt) {
	          JSlider trackTime = (JSlider) evt.getSource();
	          if (!trackTime.getValueIsAdjusting()) {
				// Kalkulasjoner og setting av tid.
	          }
	        }
	      });

 

Det som skjer er at hver gang tråden endrer tidspunkt i sangen så kjøres denne ettersom da endrer verdien i JSlideren seg, noe som fører til at sangen stopper opp litt hver gang JSlideren flyttes frem en verdi. Er det mulig å få denne kun til å reagere når brukeren selv flytter den fremover?

 

Fant ikke noe særlig hjelpsom informasjon når jeg las på Java sine sider under changelistener.

Lenke til kommentar
Videoannonse
Annonse

Kan du ikke få den til å bare oppdatere dersom musen ikke er "nede"?

 

Altså noe slikt:

 

boolean mousePressed = false;

// ...

trackTime.addMouseListener(new MouseListener() {
   public void mousePressed(MouseEvent e) {
       mousePressed = true;
   }
   public void mouseReleased(MouseEvent e) {
       mousePressed = false;
   }
   //...
});

//...

public void updateTrackTime() {
   // ...
   int value = mp3.getTime();
   if (!mousePressed) {
       trackTime.setValue(value);
   }
}

 

Det finnes sikkert en bedre løsning, men jeg kom ikke på noe annet.

Lenke til kommentar

Det fungerte det, om jeg bare fjernet utropstegnet fra mousePressed :)

Altså, måtte ha den til å oppdatere dersom musen var nede. Dersom den oppdaterte når musen ikke var nede så var det jo akkurat det samme som før, siden den kjørte hver gang tråden oppdaterte tiden :)

 

Tusen takk!

Endret av Cemi
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...