2014-12-29 3 views
-1

Я пытаюсь создать собственный класс 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; 
    } 

} 
+0

И какая у вас ошибка? – SMA

+0

Исключение в потоке "основного" 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

+0

at Hw5SpinnerModel. (Hw5SpinnerModel.java:11) \t at Hw5SpinnerModel.main (Hw5SpinnerModel.java:27) – AHA27

ответ

2

когда я нажать на кнопку для увеличения или уменьшения числа в блесны число не меняется

Проблема в том, что вы никогда не звоните super.setValue() из вашего setValue() переопределенного метода. Вместо этого вы присваиваете значение полю класса, которое нигде не используется.

Смежные вопросы