JSlider抛出illegalArgument异常:无效的范围属性

时间:2015-11-27 16:43:01

标签: java swing illegalargumentexception jslider

我有一个简单的面板,带有JSlider和3个jtextfields。 我正在使用构造函数JSlider构建一个JSlider(int min,int max,int value) 像这样:

public class Slide extends JFrame{

    JSlider slider=new JSlider(100,200,50);//here lies the problem
    JTextField maxVal=new JTextField(10);
    JTextField minVal=new JTextField(10);
    JTextField curVal=new JTextField(10);
    public Slide(){


        JPanel panel=new JPanel();
        slider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent arg0) {
                minVal.setText(slider.getMinimum()+"");
                maxVal.setText(slider.getMaximum()+"");
                curVal.setText(slider.getValue()+"");

            }
        });
        panel.setLayout(new MigLayout("", "[][][][]", "[][][][]"));



        panel.add(slider, "cell 0 0,alignx left,aligny top");
        JLabel label = new JLabel("Min val");
        panel.add(label,"cell 0 2");
        panel.add(minVal, "cell 3 2");
        this.setContentPane(panel);
        JLabel label_1 = new JLabel("Max val:");
        panel.add(maxVal,"cell 3 3");
        panel.add(label_1, "cell 0 3");
        panel.add(new JLabel("Cur value:"), "cell 0 4");
        panel.add((curVal),"cell 3 4");
        this.setSize(400, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String args[]){
        new Slide();
    }
}

问题是,当我尝试运行这个程序时,我得到一个非法的参数异常,但如果我删除了第三个参数,一切都还可以。

Exception in thread "main" java.lang.IllegalArgumentException: invalid range properties
    at javax.swing.DefaultBoundedRangeModel.<init>(DefaultBoundedRangeModel.java:102)
    at javax.swing.JSlider.<init>(JSlider.java:274)
    at javax.swing.JSlider.<init>(JSlider.java:241)
    at JSlider.Slide.<init>(Slide.java:20)
    at JSlider.Slide.main(Slide.java:54)
Java Result: 1

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

来自Java文档:

JSlider(int min, int max, int value)

使用指定的最小值,最大值和值创建水平滑块。

保存滑块数据的BoundedRangeModel处理滑块上不正确设置最小值,初始值和最大值可能引起的任何问题。有关详细信息,请参阅 BoundedRangeModel 文档。

BoundedRangeModel

minimum <= value <= value+extent <= maximum

参数应该保持上述关系。在您的情况下,100(min)超过50(value)。