Java: qanday qilib JSpinner qiymatini ba'zi ofset bilan qanday qilaman?

Mening arizamda ba'zi bir qiymatlar 0 dan 0gacha bo'lgan oraliqlarga ega. Lekin foydalanuvchi 1dan boshlab bu oraliqni ko'rishi kerak. Bu offseting materiallarini taqdimotga o'tkazish kerak deb o'ylardim. Bunday holda JSpinner komponenti. Agar almashtirish mavjud bo'lsa (agar barcha qiymatlar mavjud bo'lmasa) kontruktorda ko'rsatilishi mumkin. Biroq, JSpinner yoki getValue() kodini getValue() yoki shunga o'xshash narsa sifatida bekor qilsam (+1 faqat test uchun)

       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;
        }

u cheksiz pastadir. O'ylaymanki, bu yerda ba'zi bir sabablarga ko'ra davlat o'zgarishi hodisasini o'chiradi. Qo'ng'iroqlar yana getValue , ko'proq sonlarni oshiradi, hodisa sodir bo'ladi, kuchayadi va hokazo. Buni qanday hal qilish mumkin? Rahmat

4

2 javoblar

Dasturingizning ma'lumotlar modeli va spinnerning raqamli modelini aralashtirmang; ularni alohida qoldiring. To'g'ri taqdimot oralig'iga ega bo'lgan SpinnerNumberModel maxsus kodini taqdim eting, 1 .. n . Istalgan oraliqda qadriyatlarni qaytaradigan accessorni taqdim eting, 0 .. n -1.

getValue() o'rniga barcha mijozlar foydalanishi kerak bo'lgan getValue() - offset asosidagi getAdjustedValue() ?

Ha. SpinnerModel , JSpinner ko'rinishida xizmat qiladi. Agar sizning arizangizning modeli turli bo'linmalarni ishlatsa, ba'zi o'zgarishlarni amalga oshirish kerak. Buning qaerda ekanligini aniq bilib olishingiz kerak. Haqiqiy namuna sifatida, bu model ning

4
qo'shib qo'ydi
Men yuqorida ishlab chiqilgan.
qo'shib qo'ydi muallif trashgod, manba
Shunday qilib, Jspinner value + offset kodini SpinnerNumberModel ga o'tkazadi va asosan getValue() - getAdjustedValue getValue o'rniga barcha mijozlar foydalanishi kerak bo'lgan offset ? Men sizni to'g'ri tushunganmisiz?
qo'shib qo'ydi muallif Boris Mikhaylov, manba
rahmat, meni to'g'ri yo'ldan olishdi
qo'shib qo'ydi muallif Boris Mikhaylov, manba

Menimcha CyclingSpinnerListModel dan foydalanishingiz mumkin. buni qiling

2
qo'shib qo'ydi
@Boris Mixaylov haqida bu cheksiz pastadirga kiradi. , keyin uni ba'zi oraliqlarga qaytarishingiz mumkin
qo'shib qo'ydi muallif mKorbel, manba
Buni batafsil aytib bera olasizmi? Men qanday yordam berayotganini bilmayman
qo'shib qo'ydi muallif Boris Mikhaylov, manba
ammo hamma narsa qiymatni bir marta oshirishdir
qo'shib qo'ydi muallif Boris Mikhaylov, manba