JSliders 只滑动一半

JSliders only sliding halfway

我的应用程序中有多个 JSlider,我想知道为什么它们只能滑动到一半。

public class test1 extends javax.swing.JFrame {
    public test1() {
        initComponents();
        jSlider1.setExtent(255);
        jSlider1.setValue(-255);
}
@SuppressWarnings("unchecked")                     
private void initComponents() {

    jSlider1 = new javax.swing.JSlider();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

}                    

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new test().setVisible(true);
        }
    });
}

private javax.swing.JSlider jSlider1;                
}

使用 setExtent 或 setMaximum 看起来效果相同,但 setExtent 使滑块只能滑动一半。正确的代码如下所示:

public class test1 extends javax.swing.JFrame {
    public test1() {
        initComponents();
        jSlider1.setMaximum(255);
        jSlider1.setValue(-255);
}
@SuppressWarnings("unchecked")                     
private void initComponents() {

    jSlider1 = new javax.swing.JSlider();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

}                    

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new test().setVisible(true);
        }
    });
}

private javax.swing.JSlider jSlider1;                
}

如果您打算创建从 -255 到 255 的范围,则应设置 jslider1.setMinimum(-255) 和 jslider1.setMaximum(255)。

您也可以实现ChangeListener接口,使用addChangeListener给滑块添加监听器。您可以在方法 stateChanged(ChangeEvent e) 中做一些事情,例如更新 RGB 颜色。