Я пытаюсь создать собственный класс SpinnerNumberModel и реализовать 4 метода: getValue(), setValue(), getNextValue() и getPreviousValue(). кажется, я всегда получаю ошибку от всех этих методов, когда я хочу, чтобы установить размер шага к власти 2.Как создать пользовательскую функцию SpinnerNumberModel 2
import javax.swing.SpinnerNumberModel;
public class MySpinnerModel extends SpinnerNumberModel {
Number value;
@Override
public Object getValue() {
Object returnValue = Math.pow(2, (Double) super.getValue());
return returnValue;
}
@Override
public void setValue(Object value) {
if ((value == null) || !(value instanceof Number)) {
throw new IllegalArgumentException("illegal value");
}
if (!value.equals(this.value)) {
this.value = (Double)value;
fireStateChanged();
}
}
@Override
public Object getNextValue() {
Object returnValue = Math.pow(2, (Double) super.getNextValue());
return returnValue;
}
@Override
public Object getPreviousValue() {
Object returnValue = Math.pow(2, (Double) super.getPreviousValue());
return returnValue;
}
}
И какая у вас ошибка? – SMA
Исключение в потоке "основного" java.lang.ClassCastException: java.lang.Integer не может быть приведен к java.lang.Double \t на MySpinnerModel.getValue (MySpinnerModel.java:8) \t в javax.swing.JSpinner.getValue (JSpinner.java:331) \t at javax.swing.JSpinner $ DefaultEditor. (JSpinner.java:623) \t at javax.swing.JSpinner $ NumberEditor. (JSpinner.java:1199) \t at javax.swing.JSpinner $ NumberEditor. (JSpinner.java:1175) \t at javax.swing.JSpinner $ NumberEditor. (JSpinner.java:1150) \t at javax.swing.JSpinner.createEditor (JSpinner.java:249) \t at javax.swing.JSpinner. (JSpinner.java:155) –
AHA27
at Hw5SpinnerModel. (Hw5SpinnerModel.java:11) \t at Hw5SpinnerModel.main (Hw5SpinnerModel.java:27) –
AHA27