2012-12-22 2 views
0

J'implémente un simple JSlider horizontal en Java. Pas de marques ou quelque chose comme ça. Probablement aussi simple qu'humainement imaginable.Le bouton JSlider ne se met pas à jour (Java de base)

Lorsque je tente de « déplacer » la JSlider gauche-droite en le faisant glisser avec la souris, sa valeur numérique ne mise à jour (je mis en place une déclaration d'impression system.out signaler les changements de valeurs du curseur, et ils ont l'air bien) .

Cependant, le bouton du curseur lui-même ne bouge pas. Il reste simplement bloqué là où il a commencé pendant l'initialisation. Existe-t-il une sorte de code standard que "chaque JSlider devrait avoir" concernant cet aspect? J'ai joué avec le truc "ChangeListener", mais je continue à frapper des culs-de-sac.

+1

Pouvez-vous publier le code que vous utilisez pour initialiser le JSlider? –

Répondre

2

semble fonctionner très bien pour moi, s'il vous plaît poster SSCCE montrer des problèmes spécifiques:

enter image description here

import java.awt.BorderLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JSlider; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import javax.swing.UIManager.LookAndFeelInfo; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class SwingSliderExample extends JPanel { 

    public SwingSliderExample() { 

     super(true); 
     this.setLayout(new BorderLayout()); 
     final JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); 

     slider.setMinorTickSpacing(2); 
     slider.setMajorTickSpacing(10); 
     slider.setPaintTicks(true); 
     slider.setPaintLabels(true); 

     // We'll just use the standard numeric labels for now... 
     slider.setLabelTable(slider.createStandardLabels(10)); 

     slider.addChangeListener(new ChangeListener() { 
      @Override 
      public void stateChanged(ChangeEvent ce) { 
       if (!slider.getValueIsAdjusting()) {//no adjustments are taking place thus we know the value is final 
        System.out.println(slider.getValue()); 
       } 
      } 
     }); 

     add(slider, BorderLayout.CENTER); 
    } 

    public static void main(String s[]) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 
         if ("Nimbus".equals(info.getName())) { 
          UIManager.setLookAndFeel(info.getClassName()); 
          break; 
         } 
        } 
       } catch (Exception e) { 
        // If Nimbus is not available, you can set the GUI to another look and feel. 
       } 
       JFrame frame = new JFrame("Slider Example"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new SwingSliderExample()); 
       frame.pack(); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 

Référence:

Questions connexes