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
我正在尝试制作一个带有一组值的 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