编程语言
首页 > 编程语言> > Java:如何使JSpinner显示带有偏移量的值

Java:如何使JSpinner显示带有偏移量的值

作者:互联网

在我的应用程序中,一些值在内部的范围从0开始.但是用户应该从1开始看这个范围.我认为将这个偏离的东西移到演示文稿中是合适的.在这种情况下,它是JSpinner组件.这样我就可以在contructor中指定是否有偏移量(并非所有值都有).但是如果我覆盖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,增加更多,触发事件,增量等等.
怎么能解决这个问题?谢谢

解决方法:

不要混淆程序的数据模型和微调器的数字模型;让他们分开.委托具有正确演示范围的私有SpinnerNumberModel,1..n.提供一个访问器,返回所需范围内的值,0..n-1.

Provide the method getAdjustedValue(), which is basically getValue()-offset, that all clients should use instead of getValue()?

是. SpinnerModel服务于JSpinner视图.如果应用程序的模型使用不同的单元,则必须进行一些转换.你必须决定最有意义的地方.作为一个具体的例子,这个modelControlPanel有一个微调器,它以Hz为单位调整频率,而应用程序的Timer需要一个以毫秒为单位的周期.

标签:java,swing,jspinner
来源: https://codeday.me/bug/20190530/1185793.html