JSlider knob not updating (basic Java)

前端 未结 1 1720
故里飘歌
故里飘歌 2021-01-26 02:43

I\'m implementing a simple horizontal JSlider in Java. No tick marks or anything like that. Probably as simple as humanly imaginable.

When I try to \"move\" the JSlide

相关标签:
1条回答
  • 2021-01-26 02:50

    Seems to work fine for me, please post SSCCE to show specific problems:

    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);
                }
            });
        }
    }
    

    Reference:

    • http://www.java2s.com/Code/Java/Swing-JFC/AnexampleofJSliderwithdefaultlabels.htm
    0 讨论(0)
提交回复
热议问题