IllegalArgumentException:创建 SpinnerListModel 时序列元素无效

IllegalArgumentException: invalid sequence element when creating SpinnerListModel

我正在尝试制作一个带有一组值的 JSpinner,随着它们的减少,步幅越来越小,所以我创建了一个函数来生成这些值,并将 100 个值添加到列表中,然后尝试创建一个 SpinnerListModel以列表为来源。这会产生以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: invalid sequence element
    at javax.swing.SpinnerListModel.setValue(SpinnerListModel.java:185)
    at com.fractalexplorer.main.RangeSelector.setValue(RangeSelector.java:106)

相关代码如下:

SpinnerListModel spinnerModel = new SpinnerListModel(constructSpinnerModelSource());

public List<Double> constructSpinnerModelSource()
{
    List<Double> list = new ArrayList<Double>();
    int steps = 100;

    for(int i = 0; i <= steps; i++)
        list.add(getStep(i));

    return list;
}

public Double getStep(double x)
{
    return 2.25 * Math.pow(0.95, x);
}

当前值的范围是 2 到 0.013321190745751494,这是最后 12 个值:

0.02341981115445541, 0.022248820596732638, 0.021136379566896003, 
0.020079560588551204, 0.01907558255912364, 0.018121803431167458,    
0.017215713259609085, 0.01635492759662863, 0.015537181216797197, 
0.014760322155957337, 0.01402230604815947, 0.013321190745751494

您有 Double 个项目的列表,但尝试将值设置为 RangeSelector 个实例。

要么尝试向模型添加 RangeSelector 个实例,要么在调用 setValue() 时将范围转换为 Double。事实上,您尝试设置不在列表中的值,模型无法接受该值。

如果您尝试设置不属于 JSpinner 值列表的值,则会抛出此异常。

示例:

String[] values = {"one", "two", "three", "four"};
SpinnerModel model = new SpinnerListModel(values);
model.setValue("TWO"); // throws IllegalArgumentException