Java 如何使用已实现的设定器正确更改喷丝头NumberModel的最大值和最小值

Java 如何使用已实现的设定器正确更改喷丝头NumberModel的最大值和最小值,java,swing,comparable,jspinner,Java,Swing,Comparable,Jspinner,我想实现一个JSpinner,并将SpinnerNumberModel添加到GUI中。value、min、max、step的值是在构建GUI之后从ini文件中读取的,因此我需要使用SpinnerNumberModel类中的设置器来更改它们。这些值作为字符串从文件中读取,然后解析为double JSpinner和SpinnerNumberModel在类InputSpinner中实现: } 我如何分别正确设置值,我应该如何处理可比较的需求?我不知道为什么设置方法不能使用double,但我找到了一种方

我想实现一个JSpinner,并将SpinnerNumberModel添加到GUI中。value、min、max、step的值是在构建GUI之后从ini文件中读取的,因此我需要使用SpinnerNumberModel类中的设置器来更改它们。这些值作为字符串从文件中读取,然后解析为double

JSpinner和SpinnerNumberModel在类InputSpinner中实现:

}


我如何分别正确设置值,我应该如何处理可比较的需求?

我不知道为什么设置方法不能使用double,但我找到了一种方法,可以使用double作为当前值、最小值、最大值和步长

如果创建模型,则在构造函数中传递如下值:

double current = 5.7;
double min = (double) 5.5;
double max = (double) 7.3;
double step = 0.1;
model = new SpinnerNumberModel(current, min, max, step);
使用哪些值无关紧要,但如果您想进一步使用double,它们似乎是double,因为这样代码也可以工作:

JFrame frame = new JFrame("frame");
InputSpinner spinner = new InputSpinner("spinner");

frame.add(spinner.getComponent());

spinner.setValue(5.1); 
spinner.setMinimum(1.0); 
spinner.setMaximum(25.3);  
spinner.setStepSize(2.5);

frame.pack();
frame.setVisible(true);

在我看来,您必须将步长设置为最后一个值,但现在它工作得很好

在我看来,您可以在设置方法中用double替换Number。无需任何铸造或转换;为了满足对SpinnerNumberModel方法的调用,它将由编译器自动装箱。您是对的,诀窍是使用已具有4个双值的模型的构造函数作为传输参数。我使用了一些随机值,因为我将它们设置为另一个值,然后无论如何,并将步骤设置为最后一个值。那就行了!请编辑您的第二个代码片段,您使用的setter是在SpinnerNumberModel中实现的,而不是在JSpinner中!它需要是模型。设置。。。。
double current = 5.7;
double min = (double) 5.5;
double max = (double) 7.3;
double step = 0.1;
model = new SpinnerNumberModel(current, min, max, step);
JFrame frame = new JFrame("frame");
InputSpinner spinner = new InputSpinner("spinner");

frame.add(spinner.getComponent());

spinner.setValue(5.1); 
spinner.setMinimum(1.0); 
spinner.setMaximum(25.3);  
spinner.setStepSize(2.5);

frame.pack();
frame.setVisible(true);