آموزشبرنامه نویسیجاوامیم تک 23

Pane : بررسی Layout های جاوا FX (قسمت ششم)

Pane : بررسی Layout های جاوا FX
مقدمه :

در ادامه ی سلسله مقالات بررسی layout ها در جاوا fx در این مقاله می خواهیم در مورد Pane صحبت کنیم.

به طور خلاصه باید گفت از این layout معمولا برای قرار دادن نودهای فرزند در یک موقعیت (position) مشخص استفاده می شود. طبق معمول ما از جزئیات صحبت می کنیم اما به خاطر سپاری تک تک آن ها الزامی نیست. امیدواریم این مقاله به شما در انتخاب layout مناسب کمک کند.

Pane :

از Pane زمانی که بخواهیم نودهای فرزند را در موقعیت مشخص بر اساس پیکسل قرار دهیم، استفاده می کنیم. به طور مثال می خواهیم مربع هایی را در نقطه ی کلیک موس قرار دهیم برای این کار Pane مناسب است. به طور کلی با توجه به تفاوت سایز مانیتور ها تعریف موقعیتی ثابت برای نودها معمولا گزینه ی مناسبی نیست. Pane یک کلاس پایه است و کلاس های HBox ، VBox ، BorderPane ، TilePane ، FlowPane ، GridePane ، StackPane ، AnchorePane زیر کلاس های آن هستند. هر کدام از آنها با الگویی مربوط به خودشان سعی کردند اجرای برنامه در مانیتور هایی با ابعاد مختلف دچار مشکل نشود.

فاصله :

به تعیین فضای خالی در  لبه های pane اصطلاحا padding می گویند. برای تعیین این فاصله از تابعی به نام setPadding استفاده می کنیم. این فاصله در محاسبه ی سایز pane در نظر گرفته می شود.

سایز فرزندان :

Pane محتوا را نمی برد. نود های فرزند در دو صورت از مرزهای آن بیرون می زنند، زمانی که موقعیت تعیین برای نود عدد منفی باشد و زمانی که سایز pane از اندازه pref خودش کوچک تر باشد.

تراز کردن :

در Pane قابلیت تراز کردن نود ها را نداریم. برای این کار باید زیر کلاس های آن استفاده کنید.

رنج تغییرات سایز:

پدر یک نود Pane، می تواند سایز آن را بر اساس رنج تغییرات سایزش تغییر دهد. رنج تغییرات سایز Pane بدون دخالت برنامه نویس قابل تعیین است. این کار زمانی انجام می شود که مقدار سایز ها،  مقدار پیش فرض USE_COMPUTED_SIZE باشد.

در این صورت نحوه ی محاسبه ی سایز های minimum، maximum و preferred به صورت زیر است :

  1. minimum :
    • عرض : جمع فاصله ها از چپ و راست
    • طول : جمع فاصله ها از پایین و بالا
  2. preferred :
    •  عرض: عرضی که از بتواند همه را نود های فرزند را با توجه به موقعیت  آن ها در راستای X و عرض preff آن ها در خود جای دهد.
    •  طول: طولی که از بتواند همه را نود های فرزند را با توجه به موقعیت  آن ها در راستای Y و طول preff آن ها در خود جای دهد.
  3. maximum :
    • عرض : Double.MAX_VALUE
    •  طول : Double.MAX_VALUE

نکته 1 : این مقادیر توسط برنامه نویس با فراخوانی توابع setter مربوطه نیز قابل تنظیم است.
نکته 2 : Double.MAX_VALUE  به معنی بدون محدودیت است. اگر سایز maximum بدون محدودیت باشد، تمام فضایی که نود پدر در اختیارش قرار می دهد را پر می کند.

مدل دهی :

پس زمینه و حاشیه (border) در این layout،  با استفاده از CSS قابل طراحی هستند.

سازنده :

در شکل زیر سازنده های Pane را آورده ایم.

کد :

تحلیل :

خروجی کد را در شکل سمت چپ می بینید. همچنین اگر سایز صفحه را مقداری با موس افزایش دهید شکل سمت راست را خواهید دید.

  • دقت کنید سایز تعیین شده برای fatherPane ( فضای سفید) از مقدار pref  محاسبه شده ی آن کمتر است. به همین خاطر فرزندان آن از مرز ها بیرون زده اند، زمانی که سایز صفحه را افزایش دهیم این بخش ها مشخص می شوند.
  • مورد بعدی که باید دقت کنید ، سایز pane ( مربع سیاه) بر اساس موقعیت، طول و عرض مربع های قرمز و آبی تنظیم شده است.
  • گوشه ی سمت چپ بالای pane در پیکسل (50,50)  fatherPane قرار گرفته است.
  • همچنین گوشه های چپ بالای مربع های آبی و قرمز به ترتیب در  در پیکسل های (10,10) و (50,50) pane قرار گرفته اند.

 

ادامه:

ارسال پاسخ