JSlider 抛出 illegalArgument exception:invalid 范围属性
JSlider throwing illegalArgument exception:invalid range properties
我有一个带有 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)
使用指定的最小值、最大值和值创建水平滑块。
保存滑块数据的 BoundedRangeModel 可处理因不正确设置滑块的最小值、初始值和最大值而引起的任何问题。有关详细信息,请参阅 BoundedRangeModel 文档。
minimum <= value <= value+extent <= maximum
参数应满足上述关系。在您的情况下,100 (min
) 大于 50 (value
)。
我有一个带有 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)
使用指定的最小值、最大值和值创建水平滑块。
保存滑块数据的 BoundedRangeModel 可处理因不正确设置滑块的最小值、初始值和最大值而引起的任何问题。有关详细信息,请参阅 BoundedRangeModel 文档。
minimum <= value <= value+extent <= maximum
参数应满足上述关系。在您的情况下,100 (min
) 大于 50 (value
)。