JSlider的旋钮不更新(基本的Java)(JSlider knob not updating (

2019-08-04 12:47发布

我用Java实现一个简单的水平JSlider的。 无刻度线之类的东西。 大概就这么简单力所能及可想而知。

当我尝试“移动”的JSlider的通过鼠标拖动左右,其数值不会更新(我成立了一个system.out print语句报告滑块的变化值,它们看起来不错)。

然而,滑块旋钮本身不移动。 它只是停留卡住它初始化过程中启动。 是否有某种形式的样板代码“每个JSlider的应该有”关于这方面的?

我已经被玩弄了“的ChangeListener”的东西,但我一直打到死角。

Answer 1:

似乎好工作对我来说,请张贴SSCCE显示具体的问题:

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

参考:

  • http://www.java2s.com/Code/Java/Swing-JFC/AnexampleofJSliderwithdefaultlabels.htm


文章来源: JSlider knob not updating (basic Java)