java - JSlider 抛出 illegalArgument 异常 :invalid range properties

标签 java swing illegalargumentexception jslider

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

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

知道为什么会这样吗?

最佳答案

来自 Java 文档:

JSlider(int min, int max, int value)

使用指定的最小值、最大值和值创建水平 slider 。

保存 slider 数据的 BoundedRangeModel 会处理因不正确设置 slider 的最小值、初始值和最大值而引起的任何问题。参见 BoundedRangeModel 文档以获取详细信息。

BoundedRangeModel

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

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

关于java - JSlider 抛出 illegalArgument 异常 :invalid range properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961692/

相关文章:

java - LinkedHashMap 中带有 JTextField 的 JLabels

java.lang.IllegalArgumentException

java - Elasticsearch REST 高级客户端结合了查询构建器

java - 用于对象包装的代码生成工具

java - 选中时显示 JTable 行的信息

android - java.lang.IllegalArgumentException 错误 : provider==null

android - 在异步任务中关闭对话框时出现 IllegalArgumentException

java - 不知道该写什么作为我的返回单?

java - 使用 Google 图表显示没有列的表格

java - 绝对布局的替代方案?