2014-12-29 27 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中不能在MySpinnerModel.getValue被強制轉換爲java.lang.Double中 \t(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在javax.swing.JSpinner.createEditor(JSpinner.java:249) \t在javax.swing.JSpinner中。 (JSpinner.java:155) – AHA27

+0

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

回答

2

功率,當我按下按鈕增加或微調人數減少的數量不會改變

問題是你從未從setValue()重寫的方法調用super.setValue()。相反,您可以將值分配給不在任何地方使用的class字段。