کنترلر ScrollPane در زبان جاوا را بیشتر بشناسیم

آبان, 1398 بدون نظر
1 ستاره2 ستاره3 ستاره4 ستاره5 ستاره (1 رای, میانگین5٫00 از5)
Loading...
برنامه نویسی, جاوا, میم تک 29, نرم افزار, نرم افزار کامپیوتر
مقدمه :

در این مقاله می خواهیم در رابطه با کنترلر scrollpane صحبت کنیم.

زمانی که حجم محتوای ما در مقایسه با ابعاد صفحه ی ما زیاد است، این نیاز ایجاد می شود که برای دیدن بخش های مختلف محتوا صفحه را اسکرول کنیم. کنترلر scrollpane دقیقا همان چیزی است که امکان اسکرول کردن محتوا را برای ما فراهم می آورد. همچنین این کنترلر در برنامه هایی که از zoomin  و zoomout استفاده می کنند به شدت کارایی دارد که در مقاله بعدی در مورد آن صحبت می کنیم.

کنترلر ScrollPane :

پیش تر در رابطه با چیدن اجزای صفحه با استفاده از layout های جاوا صحبت کردیم.

همچنین اشاره کرده بودیم زمانی که ابعاد نود فرزند ( که در اینجا می تواند همان layout ما باشد) از ابعاد نود پدر بزرگتر باشد، نود فرزند از مرز های پدر بیرون میزند. در مثال ذکر شده، اگر بخواهیم جلوی خروج نود فرزند از مرزهای نود پدر را بگیریم، نود فرزند را درون این کنترلر قرار می دهیم که ابعاد آن با ابعاد نود پدر برابر است. با این کار نود فرزند از مرزهای نود پدر بیرون نمی زند ولی همه ی محتوای آن به صورت یکجا قابل مشاهده نیست. درنتیجه برای اینکه بتوانیم بخش های مختلف محتوا را ببینیم نیاز داریم آن را  اسکرول کنیم. scrollpane این امکان را به ما می دهد که با استفاده از اسکرول بارهایش و یا با کشیدن محتوا با موس به صورت مستقیم همه ی بخش های محتوا را ببینیم.

نمایش ScrollBar ها :

کنترلر scrollpane این امکان را به ما می دهد که وجود یا عدم وجود اسکرول بارها را مدیریت کنیم.

هر scrollpane میتواند دو اسکرول بار داشته باشد که یکی از آنها افقی و دیگری عمودی است. مدیریت آن ها با استفاده از تابع setHbarPolicy برای اسکرول بار افقی و setVbarPolicy برای اسکرول بار عمودی انجام می شود. این دو تابع سه مقدار زیر را به عنوان ورودی می گیرند.

معانی هر یک از ورودی ها به صورت زیر است  :

  • ScrollBarPolicy.AS_NEEDED : هر زمان که به اسکرول بار نیاز باشد نمایش داده می شود. زمانی که ابعاد scrollPane از ابعاد محتوایش کوچکتر باشد این اتفاق می افتد.
  • ScrollBarPolicy.ALWAYS : اسکرول بار همواره نمایش داده می شود.
  • ScrollBarPolicy.NEVER : اسکرول بار تحت هیچ شرایطی نمایش داده نمی شود. در این صورت اگر ابعاد نود فرزند بزرگتر از scrollpane باشد، محتوایش بریده می شود.
سایز محتوا در کنترلر scrollpane :

اگر بخواهیم طول و عرض محتوا برابر با طول و عرض scrollpane باشد و با تغییر آن ها تغییر کند، می بایست دو ویژگی fitToHieght و fitToWidth از scrollpane را با true مقداردهی کنیم. این کار با استفاده از توابع  setFitToHieght و setFitToWidth  انجام می شود. دقت کنید سایز محتوا براساس سایز scrollpane تغییر می کند پس محتوا باید خاصیت resizable داشته باشد در غیر این صورت این ویژگی نادیده گرفته می شود.

حرکت محتوای قابل مشاهده با موس  در کنترلر ScrollPane :

به صورت پیش فرض فقط میتوان با استفاده از اسکرول بار محتوای قابل مشاهده در scrollpane را تغییر داد.  البته راه دیگر نیز وجود دارد که می توانیم محتوای scrollpane را به صورت مستقیم با فشردن  چپ کلیک موس و حرکت آن نیز تغییر دهیم. البته این ویژگی به صورت پیش فرض وجود ندارد. برای این کار می بایست به ویژگی pannable مقدار true بدهیم، این کار را با استفاده از تابع setPannable  قابل انجام است.

تعیین موقعیت پیمایش عمودی و افقی در کنترلر ScrollPane :

ویژگی های vvalue و hvalue موقعیت اسکرول بارهای افقی و عمودی را مشخص میکنند، این ویژگی ها به صورت خودکار با حرکت اسکرول بارها تغییر می کنند.  گاهی اوقات برنامه نویس نیاز دارد موقعیت اسکرول بارهای افقی و عمود را به صورت دستی تنظیم نماید. برای این کار کافیست ویژگی های hvalue و vvalue را به مقدار مورد نظر تغییر دهد.  از طرفی باید دقت کرد مقدار آن ها بین vmin و vmax و hmax و hmin  باشد. تعیین مقدار این ویژگی ها زمان zoomin , zoomout استفاده می شود که در مقاله آینده می بینیم.

کد :

تحلیل :
  • سایز محتوا ( نود فرزند ) را بزرگتر از سایز کنترلر scrollpane قرار دادیم.
  • محتوای انتخاب شده stackPane است که resizable است.
  • مقدار ویژگی pannable را true قرار دادیم. یعنی اگر کد را اجرا کنید با موس هم محتوا قابل حرکت دادن است.
  • مقدار ویژگی fitToWidth را هم true قرار دادیم.
  • Policy را هم برای Hbar و هم Vbar مقدار AS_NEEDED قرار دادیم. با اجرای کد متوجه می شویم اسکرول بار حالت افقی اصلا
    ظاهر نخواهد شد چون عرض محتوا با عرض scrollPane تغییر می کند. در نتیجه حالتی نیست که عرض محتوا بیشتر از عرض کنترلر scrollPane شود در نتیجه اسکرول بار افقی ظاهر نخواهد شد.
  • شکل اول شکل بعد از اجرای کد است. در شکل دوم عرض پنجره را با موس بعد از اجرای کد کم کردیم. همانطور که میبینید چون مقدار ویژگی fitToWidth را true کردیم، اسکرول بار افقی همچنان ظاهر نشده است.
  • شکل سوم نتیجه ی اجرای کد است بعد از اینکه خط مربوط تعیین ویژگی fitToWidth را کامنت کردیم. همانطور که میبینید اسکرول بار افقی نیز همانند اسکرول بار عمودی ایجاد شد.

scrollpane ex1     scrollpane ex2     scrollpane ex3

در این مقاله با کنترلر ScrollPane جاوا آشنا شدیم.

برچسب ها
درباره نویسنده

ارسال نظر شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Mimtechmagazine