JScrollBarni konstruktorda uzoq qiymatlarni qanday qabul qilish mumkin?

Shunday qilib, JScrollBar uchun yaratuvchisi bor:

public JScrollBar(int orientation, int value, int extent, int min, int max) 

JScrollBar dasturini amalga oshirish uchun menda int qiymatlari juda uzun bo'lishi kerak, chunki ma'lumotlarimning hajmi intning cheklashlariga bog'liq bo'lishi mumkin, shunga o'xshash narsa:

public JScrollBar(int orientation, long value, long extent, long min, long max) 

JScrollBar uchun ushbu tuzuvchini bajarish uchun eng yaxshi usul nima, bu qiymatlar hamma joyda joylashgani uchun JScrollBarni to'liq qayta tuzish kerakmi? Yoki buni amalga oshirishning yana bir yo'li bor.

NOTE: If I do completely rewrite JscrollBar I will also have to overwrite swing.DefaultBoundedRangeModel too because it also takes an int. This doesn't seem to be the best approach so does anyone have any better ideas?

2

2 javoblar

Ba'zi darajada siz haqiqiy o'zgarishlarni to'g'ri aniqlab olish uchun siz ekranning o'lchamidan chiqib ketasiz. Siz kontentni aylantirasiz va scrollbar harakat qilmaydi. Yoki foydalanuvchi teleportatsiya qilinadigan scrollbarni yangi hududga yo'naltirishi kerak.

32 bitlik tamsayılar soni 2 milliarddan oshadi. Agar ekran o'lchamlari 1000 piksel bo'lsa, foydalanuvchi scrollbarni nazorat qila olmaydi, chunki aylantirish panasida hech qanday piksel harakati siz kaydırılmakta bo'lgan har qanday maqsadga 2,147,483 pikselni (zumunuz 1: 1 bo'lsa) ifodalaydi. Shunday qilib, biron bir darajada siljitish uchun siljish satriga yaqinlashtirish darajasini xaritada ko'rsatish usulini o'ylab ko'rgan bo'lardim.

Boshqa variantlar - katta rasmda turgan joyni ko'rsatadigan kvadratga ega kichik rasmni ko'rsatadigan, keyin displeyda kattalashtirilgan umumiy ko'rinish/batafsil tekshiruvdan foydalanish. Rasmni yuqori rasmga tortib, uning batafsil tasvirida ko'rishingiz mumkin. Mavjud bo'lgan muammolar sizda hali 2 million pikselli harakatga ega bo'lsa, uni kichik o'lchamdagi kattalikdagi katta tasvirni aylanib chiqishga qiynalgan bo'ladi. Biroq, qo'l harakati batafsil ko'rinishda tortishish sifatida ishlatilmaydigan kichik harakatlar uchun foydalaning. Bu tomon JScrollBarni qayta tiklash masalasini ko'taradi va ehtimol yaxshi variant bo'ladi.

3
qo'shib qo'ydi
Men ma'lumotlarning bir nechta qismida buffering qilayapman, shuning uchun oraliq 1 dan 100 gacha va ular 56 holatida; agar ular siljish paneli bo'yicha pastga o'tsa, bu 57-joyida bo'ladi. Scrollbar pastga tushadigan joyning grafik tasvirini emas ... Umid qilamanki bu mantiqanmi?
qo'shib qo'ydi muallif Grammin, manba
Men sizlarga qo'shilaman, har bir aylantirish piklining harakati 2mp ni ifodalaydi, lekin men o'ng tomonning o'ng tomonidagi aylantirish tugmachasini bosib, scrollbarni harakatlantirmasdan, lekin hali ham ma'lumotlarni ko'chirib olaman. Va shuning uchun aylana chizig'ini harakatga o'tkazmasdan aylantirma qiymatimni moslashtiring.
qo'shib qo'ydi muallif Grammin, manba
Siz bu fikrni amalga oshirganingiz uchun sizga rahmat
qo'shib qo'ydi muallif Grammin, manba
Siz faqat zoomable nazorat xaritalashni yaratishga harakat qilyapsiz, lekin juda g'alati tarzda ko'rinadi. Agar siz scrollbardan foydalansangiz va uning 1000 pozitsiyasi (ya'ni aylantirish chizig'i 1000 piksel kenglik yoki baland bo'lsa), har bir piksel bosh barmog'i ko'chirilgan holda 2 million pikselni tashkil etadi, agar scrollbar o'ng chap tomonni o'zingizning kaydırılabilir . Aks holda, to'liq tasvirni chapdan o'ngga o'tolmaysiz. Menimcha, qulaylikdan tashqari, masofani yaqinlashtirish va masofani yaqinlashtirish uchun kontseptsiyani yaratish kerak.
qo'shib qo'ydi muallif chubbsondubs, manba
Ha, sizda ikki tezlik bor: Teleportatsiya va yurish. Siz tasvirlaydigan darajada bo'sh joy uchun biroz haddan tashqari navigatsiya. :-) O'ylaymanki, mening fikrimcha, aylantirish uchun ko'proq piksellar sonini bo'sh joyni yaxshiroq boshqarish uchun yordam bermaydi.
qo'shib qo'ydi muallif chubbsondubs, manba
Endi siz nima qilayotganingizni bilib oldim. Bu raqamlar qanchalik katta ekani haqida o'ylaysam, men o'zim ko'rmoqchi bo'lgan narsalarni topishga harakat qilaman. Ehtimol, sun'iy yo'ldosh rasmlari bo'lishi kerak deb o'ylayman.
qo'shib qo'ydi muallif chubbsondubs, manba

Ehtimol, subclass JScrollBar va setValue ni bekor qilmoqchi va qiymati (mos ravishda) moslashtirmoqchiman.

1
qo'shib qo'ydi