在我的应用程序中,一些值的内部范围从0开始。但是用户应该看到这个范围从1开始。我认为将这个偏移量的东西放到演示中会更合适。在这种情况下,它是JSpinner组件。因此,我可以在构造函数中指定是否有偏移量(不是所有值都有)。但是,如果我重写JSpinner的getValue()
或模型的getValue()
,就像这样(+1只是为了测试)
public Object getValue() {
Number value = (Number)super.getValue();
Number newValue=value;
if (value instanceof Double){
newValue=value.doubleValue()+1;
}
else if (value instanceof Integer){
newValue = value.intValue()+1;
}
return newValue;
}
程序进入了无限循环。我猜测,它在这里因为某种原因触发了状态改变事件。再次调用getValue
,递增更多,触发事件,递增等等。
如何解决这个问题?谢谢。
value+offset
传递给SpinnerNumberModel
,并提供getAdjustedValue
方法,其基本上是getValue()-offset
,所有客户端都应该使用该方法而不是getValue
?我理解的对吗? - Boris Mikhaylov