我试图创建一个自定义SpinnerNumberModel类并实现4个方法,即getValue(),setValue(),getNextValue()和getPreviousValue()。当我想将步长设置为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 :(得分:2)
当我按下按钮以增加或减少旋转器中的数字时,数字不会改变
问题是您永远不会从super.setValue()
覆盖的方法中调用setValue()
。而是将值分配给不在任何地方使用的类字段。