2012-04-10 12 views
0

Ich versuche, JSlidersetValue(int) zu verwenden, um die Position des Reglers automatisch zum nächsten Tick zu verschieben, wenn ein Benutzer mit dem Ziehen fertig ist. Die Position ist richtig eingestellt, wenn der Benutzer klickt, aber nicht, wenn sie den Knopf ziehen. Wie repariere ich thix?Ändern Sie den Wert des Schiebereglers, nachdem der Regler gezogen wurde

/** 
    * Called when the slider is moved. 
    * 
    * @access public 
    * @param ChangeEvent 
    * @return void 
    */ 
    public void stateChanged(ChangeEvent e) { 
     JSlider source = (JSlider) e.getSource(); 

     if (! source.getValueIsAdjusting()) { 
      //let's only allow users to increment by TIMER_SPACING 
      int fps = (int) source.getValue(); 
      int temp = fps % TIMER_SPACING; 
      if (temp > TIMER_SPACING/2) { 
       fps += TIMER_SPACING - temp; 
      } else { 
       fps -= temp; 
      } 

      source.setValue(fps); 

      if (fps == 0) { 
       timer.stop(); 
      } else { 
       if (! timer.isRunning()) { 
        timer.start(); 
       } 
       timer.setDelay(1000/fps); 
      } 
     } 
    } 
+0

haben Sie einen Equalizer Codierung ??? – mKorbel

+0

Nein, aber ähnliche Funktionalität. – Wex

+3

Warum nicht einfach [Häkchen ankreuzen] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JSlider.html#setSnapToTicks%28boolean%29)? –

Antwort