برنامه نویسیجاوامیم تک 17

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

AnchorPane : بررسی Layout های جاوا FX

بررسی ویژگی Layout های مختلف در جاوا FX (قسمت سوم):

در ادامه ی مقالات گذشته که به ترتیب از HBox و VBox و همچنین FlowPane و TilePane گفتیم. در این مقاله می خواهیم در مورد AnchorPane  صحبت کنیم. مقاله ی این ماه به نسبت ماه قبل سبک تر است. طبق معمول ما از جزئیات صحبت می کنیم اما به خاطر سپردن تک تک آن ها الزامی نیست. امیدواریم این مقاله به شما در انتخاب layout مناسب کمک کند.

AnchorPane

این Layout اجازه می دهد نودهای فرزند را با فاصله ی مشخص از لبه هایش قرار داده و فیکس کنیم. دقت کنید اگر برای AnchorPane فاصله padding و یا border تعریف کرده باشید، فاصله از لبه ی داخلی اندازه گیری می شود.

فاصله ها :

به تنظیم فاصله ی نودهای فرزند از لبه ی layout اصطلاحا padding می گویند. برای این کار از تابعی به نام setPadding استفاده می کنیم. با این تابع می توان فاصله ی نودها را از بالا، پایین، چپ و راست AnchorPane تنظیم کرد.

قید های anchor و توابع setter  مربوطه :

AnchorPane متدهای استاتیکی برای تعیین هر کدام از قیدهای anchor دارد. topAnchor، leftAnchor ، rightAnchor و bottomAnchor  به ترتیب برای تعیین قیدهای فاصله از پایین، بالا، چپ و راست است.

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

AnchorPane ویژگی برای تنظیم بازه ی سایز بدون دخالت برنامه نویس دارد. این کار زمانی انجام می شود که مقدار این ویژگی USE_COMPUTED_SIZE باشد. در این صورت نحوه ی محاسبه ی سایز های minimum، maximum و preferred به صورت زیر است :

  1. minimum :
    • عرض : فاصله های چپ و راست ( padding + border) + عرضی که نیاز هست تا همه ی نود های قلاب شده به چپ و راست را با سایز minimum آن ها نشان دهیم.
    • طول : فاصله های بالا و پایین( padding + border) + طولی که نیاز هست تا همه ی نود های قلاب شده به بالا و پایین را با سایز minimum آن ها نشان دهیم.
  2. preferred :
    •  عرض: مشابه حالت قبل فقط سایز preferred را جایگزین minimum کنید.
    •  طول: مشابه حالت قبل فقط سایز preferred را جایگزین minimum کنید.
  3. maximum :
    • عرض : Double.MAX_VALUE
    • طول : Double.MAX_VALUE

نکته1 : این مقادیر توسط برنامه نویس با فراخوانی توابع setter مربوطه نیز قابل تنظیم است.

نکته2: Double.MAX_VALUE به این معنی است که تمام فضایی که نود پدر در اختیارش قرار می دهد را پر می کند.

سایز فرزندان :
  • در حالت عادی نودهای فرزند را با سایز preferred آن ها نمایش می دهد.
  • اگر یک نود از دو سمت خلاف هم ( مثلا چپ و راست ) فیکس (Anchor) شده باشد، در صورتی که سایزش تغییر پذیر باشد، AnchorPane سایز آن را تغییر می دهد تا فاصله ها را حفظ کند در غیر این صورت فقط فاصله از چپ و بالا حفظ می شود.
  • AnchorPane محتوا را نمی برد. اگر فضای اختصاص داده شده به  نودهای فرزند از اندازه preferred آنها کمتر باشد، از مرزهای pane بیرون می زنند.
مدل دهی :

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

سازنده :

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

کد و تحلیل :

نتیجه :

شکل بالایی خروجی کد و شکل پایینی برای ساده تر شدن تحلیل کد می باشد.

  • خط ها، برای نمایش فاصله قلاب های هر نود از لبه های داخلی AnchorPane است. خط های سبز برای button1، طوسی برای button2 و نارنجی برای button3 می باشد.
  • نکته ی که در button1 باید دقت کنید فاصله نداشتن از پایین pane است. دلیل آن عدم تعریف قلاب برای button1 از سمت پایین است.
  • نکته ی اولی که در button2 باید دقت کنید، تغییر عرض آن حتی با وجود تعیین حداکثر عرض 50 می باشد. سایز دکمه ها تغییر پذیر است یا به عبارتی resizable هستند با تعریف قلاب های خلاف جهت (راست و چپ) سایز دکمه تغییر می کند تا فاصله قلاب ها رعایت شود.
  • نکته ی دوم فاصله نداشتن button2 از بالای pane است. دلیل آن تعریف نکردن قلاب نه از بالا و نه از پایین است.
  •  آخرین نکته مربوط به button3 و تغییر طول آن است. می خواستیم نشان دهیم تغییرات سایز تنها در تغییر عرض خلاصه نمی شود. این تغییرات در طول نودهای فرزند هم با تعریف قلاب های خلاف جهت اتفاق می افتد.

ادامه:

ارسال پاسخ