ساختار یک برنامه در JavaFX
JavaFX یک API کامل که شامل مجموعهای از کلاسها و واسطها برای ساخت برنامههای GUI میباشد را ارائه میدهد. پکیجهای مهم این API عبارتند از :
- javafx.animation : شامل کلاسهایی برای افزودن انیمشین های انتقالی مانند Fill ،fade ،rotate ،scale و Translation
- javafx.application : شامل مجموعهای از کلاسها که وظیفه انجام چرخه حیات یک برنامه JavaFX را بر عهده دارند.
- javafx.css : شامل کلاسهایی برای افزودن استایل هایی شبیه به CSS به برنامههای GUI در JavaFX
- javafx.event : شامل کلاسها و واسطهایی برای مدیریت رخداد (Event) ها در JavaFX
- javafx.geometry : شامل کلاسهایی برای تعریف اشیاء دو بعدی و انجام عملیات بر روی آنها
- javafx.stage : این پکیج شامل کلاسهای سطح بالا برنامه JavaFX می باشذ
- javafx.scene : این پکیج کلاسها و واسطهایی را برای پشتیبانی از Scene graph ارائه میدهد. به علاوه اینکه sub-package هایی مانند canvas ،chart ،control ،effect ،web ،image ،input ،layout ،media ،paint ،shape ،text ،transform و … را نیز ارائه میدهد. کامپوننت های مختلفی از این API پشتیبانی میکنند.
تصویر زیر معماری API یک برنامه JavaFX را نشان میدهد :
نمودار Scene
در JavaFX برنامههای GUI با استفاده از نمودار Scene تبدیل به کد میشوند. یک نمودار Scene نقطه شروع ساخت یک برنامه GUI میباشد که شامل تعدادی گره میباشد. یک گره شامل یک شیء گرافیکی/تصویری است که ممکن است شامل :
- اشیاء Geometrical یا گرافیکی: شامل اشیاء دو بعدی و سه بعدی مانند دایره، مستطیل، چند ضلعی و …
- کنترلهای واسط کاربری (UI) : شامل Button ، Checkbox ، Choice box ، Text Area و …
- Container ها: شامل Border Pane ، Grid Pane ، Flow Pan و …
- عناصر چند رسانهای: شامل اشیاء صوت و ویدئو و تصویر
به طور کلی مجموعهای از گرهها یک نمودار Scene را ایجاد میکنند. همانطور که در شکل زیر هم مشخص است همه گرهها به صورت سلسله مراتبی مرتب شدهاند :
هر گره در یک نمودار Scene یک والد دارد و گرهای که هیچ والدی نداشته باشد root یا ریشه نامیده میشود. به همین ترتیب هر گره یک یا جند فرزند دارد و گرههایی که هیچ فرزندی ندارند Leaf یا برگ نامیده میشوند. یک گره که شامل فرزند باشد Branch یا شاخه نامیده میشود. یک گره فقط یک بار میتواند به یک نمودار Scene اضافه شود. گرههای نمودار scene میتواند ویژگیهایی مانند افکت (Effect)، شفافیت (Opacity)، تبدیل (Translation) و مدیریت رخداد (Event Handler) را داشته باشد.
منشور (Prism)
منشور برنامهای است که به منظور پردازش کردن تصاویر در JavaFX مورد استفاده قرار میگیرد که میتواند تصاویر دو بعدی و سه بعدی را پردازش کند. پیش نیازهای پردازش یک تصویر در prism عبارتند از :
- DirectX 9 بر روی ویندوز XP و ویستا
- DirectX 11 بر روی ویندوز 7
- OpenGL بر روی مک و لینوکس
در اینجا پشتیبانی سخت افزاری برای گرافیک کافی نیست و Prism با استفاده از نرم افزار به پردازش تصویر میپردازد. استفاده از کارت گرافیک یا GUP برای پردازش تصویر باعث تولید تصاویری با کیفیت بهتر میشود ولی در مورد Prism از کارت گرافیک پشتیبانی نمیشود و به صورت پیش فرض از نرم افزار برای پردازش تصویر استفاده میکند.
ابزار GWT (Glass Windowing Toolkit)
همانطور که از نام آن هم میتوان فهمید GWT سرویسهایی را برای مدیرت پنجرهها، تایمرها، سطوح (Surface) و صف رخداد (Enent) ها ارائه میدهد. GWT پلتفرم JavaFX را به سیستم عاملی که برنامه در آن اجرا میشود متصل میکند.
ابزار Quantum
Quantum مفهومی است که بر روی کامپوننت های سطح پایین مانند Prism ،Glass ،Media Engine و Web Engine تعریف میشود که بین Prism و GWT ارتباط برقرار میکند و آنها را در JavaFX در دسترس قرار میدهد.
WebView
با استفاده از JavaFX شما میتوانید محتوای HTML را به یک نمودار Scene متصل کنید. WebView یکی از کامپوننت های JavaFX میباشد که برای پردازش این محتوا مورد استفاده قرار میگیرد و از یک تکنولوژی به نام Web Kit استفاده میکند که یک موتور مرورگر وب منبع باز داخلی میباشد. این کامپوننت از تکنولوژیهای مختلف وب مانند HTML5،CSS ،Java Script ،DOM و SVG استفاده میکند. با استفاده از WebView شما میتوانید :
- محتوای HTML را از یک URL از راه دور یا محلی پردازش کنید
- از تاریخچه و ویژگی Back و Forward استفاده کنید.
- محتوا را مجدداً بارگذاری (Referesh) کنید.
- افکتهای مختلف را به کامپوننت وب اعمال کنید
- محتوای HTML را ویرایش کنید.
- دستورات JavaScript را اجرا کنید.
- رخداد (Event) ها را مدیریت کنید.
به طور کلی با استفاده از WebView میتوانید با استفاده از جاوا محتوای وبی را کنترل کنید.
Media Engine
JavaFX Media Engine یک موتور منبع باز است که به عنوان یک Streamer شناخته میشود. این Media Engine از پخش محتوای ویدئویی و صوتی پشتیبانی میکند. فرمتهایی که پشتیبانی میکند عبارتند از :
پکیج javafx.scene.media شامل کلاسها و واسطهایی برای ارائه مدیا میباشد که شامل سه کامپوننت زیر میباشد :
- Media Object : برای نشان دادن فایل چند رسانهای
- Media Player : برای پخش محتوای چند رسانهای
- Media View : برای نمایش چندرسانهای