البرمجة

أصناف مكتبة JavaFX الأساسية

التعرف على بعض أصناف مكتبة جافا إف إكس JavaFX البسيطة

تعتبر مكتبة جافا إف إكس JavaFX من الأدوات الحديثة والقوية التي طورتها شركة أوراكل لتكون بديلاً عصريًا وفعالًا لـ Swing في تطوير واجهات المستخدم الرسومية (GUI) لتطبيقات جافا. تقدم JavaFX مجموعة واسعة من الأصناف التي تسمح ببناء واجهات تفاعلية غنية وسهلة الاستخدام مع دعم متقدم للرسوميات والتأثيرات والوسائط المتعددة. يتناول هذا المقال شرحًا مفصلًا لبعض الأصناف البسيطة الأساسية في مكتبة JavaFX، والتي تعد اللبنة الأولى لفهم كيفية بناء التطبيقات بها.


مقدمة عامة عن JavaFX

JavaFX هي منصة تطوير واجهات المستخدم الرسومية المخصصة لتطبيقات جافا، تتميز بمرونتها الكبيرة وقدرتها على تقديم تصميمات حديثة وعناصر واجهة مستخدم غنية، حيث تدعم الرسوم المتحركة، وتأثيرات CSS، وواجهات تعتمد على ملفات FXML لتصميم الواجهات بشكل منفصل عن المنطق البرمجي.

تم تصميم JavaFX لتسهيل بناء التطبيقات التي تتطلب تفاعلات متقدمة مع المستخدم، وهي تعمل على مختلف أنظمة التشغيل مثل ويندوز، ماك، ولينكس، مما يجعلها خيارًا مثاليًا للمطورين الذين يرغبون في بناء تطبيقات سطح مكتب متطورة.


أهم الأصناف البسيطة في JavaFX

تحتوي مكتبة JavaFX على عدد كبير من الأصناف التي تتيح التحكم الكامل بعناصر واجهة المستخدم. سنركز هنا على بعض الأصناف الأساسية والبسيطة، التي تشكل نقطة انطلاق لأي مطور يرغب في العمل باستخدام JavaFX.

1. صنف Application

يعتبر صنف Application هو نقطة البداية لأي تطبيق JavaFX، حيث يرث منه كل تطبيق يقوم بتشغيل الواجهة الرسومية. هذا الصنف يحتوي على الطريقة الأساسية start(Stage primaryStage) التي يتم استدعاؤها لعرض واجهة المستخدم على الشاشة.

  • وظيفة الصنف: إدارة دورة حياة التطبيق، بدءًا من الإعداد إلى إظهار النوافذ والتعامل مع الإغلاق.

  • أهم الطرق:

    • start(Stage primaryStage): تُستخدم لتهيئة وإظهار واجهة المستخدم.

    • init(): يمكن إعادة تعريفها لتحميل البيانات أو إجراء عمليات تحضيرية قبل بدء التطبيق.

    • stop(): تستخدم لإدارة العمليات عند إغلاق التطبيق، مثل تحرير الموارد.

2. صنف Stage

Stage يمثل النافذة الأساسية أو أي نافذة فرعية في التطبيق. يمكن وصفه كإطار رئيسي يحتوي على محتويات التطبيق (المشاهد).

  • وظيفة الصنف: إدارة النافذة، التحكم بحجمها، عنوانها، وأحداثها.

  • المكونات الأساسية:

    • setTitle(String title): تعيين عنوان النافذة.

    • setScene(Scene scene): ربط مشهد معين بالنافذة.

    • show(): عرض النافذة على الشاشة.

    • close(): إغلاق النافذة.

3. صنف Scene

يمثل Scene المشهد أو المحتوى المرئي داخل نافذة الـ Stage. يحتوي على شجرة من العقد (Nodes) التي تشكل واجهة المستخدم، مثل أزرار، نصوص، صور، وأي عناصر رسومية أخرى.

  • وظيفة الصنف: تحديد ما يتم عرضه في النافذة.

  • أهم الخصائص:

    • root: هو الجذر الأساسي الذي يحتوي على العقد الأخرى في المشهد (عادةً ما يكون من نوع Parent).

    • إمكانية تغيير حجم المشهد وتأثيراته.

4. صنف Node

Node هو الصنف الأب لجميع العناصر المرئية في JavaFX، فهو يمثل عنصرًا في شجرة المشهد. جميع عناصر الواجهة مثل الأزرار، النصوص، الصور، وغيرها ترث من هذا الصنف.

  • وظيفة الصنف: يمثل وحدة بناء واجهة المستخدم.

  • خصائص مهمة:

    • layoutX و layoutY: لتحديد موقع العنصر داخل الحاوية.

    • opacity: لتحديد شفافية العنصر.

    • visible: لتحديد ظهور العنصر أو إخفائه.

    • style: لإضافة أنماط CSS للعنصر.

5. صنف Button

يعد Button من أكثر العناصر استخدامًا في JavaFX، وهو زر يمكن للمستخدم التفاعل معه بواسطة النقر لتنفيذ أمر معين.

  • خصائص مهمة:

    • text: النص الظاهر على الزر.

    • onAction: الحدث الذي يتم تنفيذه عند الضغط على الزر.

  • طرق هامة:

    • setDisable(boolean): تعطيل أو تفعيل الزر.

    • setGraphic(Node graphic): إضافة صورة أو أي عنصر رسومي على الزر.

6. صنف Label

Label هو عنصر عرض نصي بسيط، يستخدم لعرض نصوص ثابتة أو ديناميكية في الواجهة.

  • خصائص:

    • text: النص المعروض.

    • graphic: يمكن ربط صورة مع النص.

  • ميزات إضافية:

    • دعم تنسيق النص باستخدام CSS.

    • إمكانية الربط مع خصائص أخرى لعرض بيانات متغيرة.

7. صنف TextField

هو عنصر إدخال نصي بسيط يسمح للمستخدم بإدخال نص من لوحة المفاتيح.

  • خصائص:

    • text: النص الموجود في حقل الإدخال.

    • promptText: نص إرشادي يظهر داخل الحقل عندما يكون فارغًا.

  • أحداث:

    • دعم الاستماع لتغير النص عبر textProperty().

8. صنف VBox و HBox

هذان الصنفان هما من الحاويات الأساسية لترتيب عناصر واجهة المستخدم عموديًا (VBox) أو أفقيًا (HBox).

  • وظائف:

    • تنظيم وتوزيع العناصر بداخلها بشكل تلقائي.

    • دعم التحكم في التباعد والمحاذاة.

  • خصائص مهمة:

    • spacing: المسافة بين العناصر.

    • alignment: محاذاة العناصر داخل الحاوية.

  • ميزة:

    • يسمحان ببناء تخطيطات بسيطة وواضحة للواجهة.

9. صنف SceneBuilder (أداة وليس صنف برمجي)

على الرغم من أن SceneBuilder ليس صنفًا داخل JavaFX، فهو أداة مهمة جدًا تسهل تصميم الواجهات بشكل بصري، حيث يمكن من خلالها سحب وإسقاط العناصر وترتيبها ثم تصدير ملف FXML يستخدم في التطبيق.


كيفية بناء واجهة مستخدم بسيطة باستخدام هذه الأصناف

تبدأ عملية بناء واجهة JavaFX من خلال إنشاء صنف يرث من Application، ثم في طريقة start() يتم إعداد النافذة الأساسية Stage، ومن ثم إنشاء Scene وتحديد جذره مثل VBox أو HBox لترتيب العناصر داخله.

مثال بسيط:

java
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class SimpleJavaFX extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("مرحبا بك في JavaFX!"); Button button = new Button("اضغط هنا"); button.setOnAction(e -> label.setText("لقد ضغطت الزر!")); VBox root = new VBox(10, label, button); root.setStyle("-fx-padding: 20; -fx-alignment: center;"); Scene scene = new Scene(root, 300, 200); primaryStage.setTitle("تجربة JavaFX"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }

في هذا المثال يتم إنشاء نافذة تحتوي على نص وزر، وعند الضغط على الزر يتغير النص المعروض. هذا يوضح بساطة استخدام الأصناف الأساسية لتكوين واجهة تفاعلية.


مكونات إضافية تساعد على إثراء الواجهة

صنف TextArea

مشابه لـ TextField ولكنه متعدد الأسطر، يستخدم لإدخال أو عرض نصوص طويلة.

صنف CheckBox

زر اختيار يمكن تحديده أو إلغاء تحديده، يستخدم لتقديم خيارات ثنائية.

صنف RadioButton

يشبه CheckBox لكنه ينتمي لمجموعة واحدة تتيح اختيارًا وحيدًا.

صنف ComboBox

قائمة منسدلة تسمح للمستخدم باختيار عنصر من بين عدة عناصر.


أهمية الأنماط والتنسيق في JavaFX

تدعم JavaFX تنسيق الواجهات عبر ملفات CSS حيث يمكن تخصيص المظهر الخارجي للعناصر، مثل تغيير الألوان، الخطوط، الحواف، والظلال. هذا يعطي مطوري JavaFX القدرة على فصل تصميم الواجهة عن منطق التطبيق، مما يسهل عملية الصيانة والتحديث.


استخدام ملفات FXML مع الأصناف البسيطة

FXML هو ملف XML يستخدم لتعريف واجهات JavaFX بشكل وصفي، مما يسمح للمطورين أو المصممين بإنشاء واجهات بشكل مستقل عن الكود البرمجي.

في هذا السياق، يمكن ربط ملفات FXML بالأصناف البسيطة مثل Button، Label، TextField وغيرها من خلال التعريف داخل ملف FXML، ثم ربطها بالكود البرمجي عبر تقنية الـ Controller.


مقارنة بين JavaFX و Swing من حيث الأصناف البسيطة

بينما توفر Swing مجموعة أصناف مشابهة لبناء الواجهات، تتميز JavaFX بمرونتها العالية في التصميم، ودعمها المتقدم للرسوميات ثلاثية الأبعاد، التأثيرات البصرية، والتحكم في الوسائط المتعددة. كما أن أصناف JavaFX تحتوي على خصائص وأحداث أكثر حداثة تسهل عملية التطوير.


جدول يوضح بعض الأصناف البسيطة في JavaFX ووظائفها

الصنف الوظيفة الأساسية الاستخدام الشائع
Application نقطة بداية تطبيق JavaFX، إدارة دورة حياة التطبيق إطلاق التطبيق وإدارة النوافذ
Stage النافذة أو الإطار الذي يحتوي على المحتوى عرض النافذة الرئيسية أو النوافذ الفرعية
Scene المحتوى المعروض داخل النافذة وضع عناصر واجهة المستخدم
Node العنصر الأساسي في شجرة المشهد جميع العناصر الرسومية في الواجهة
Button زر تفاعلي يسمح بتنفيذ أوامر تنفيذ الأحداث عند الضغط
Label عرض نص ثابت أو متغير عرض المعلومات والنصوص
TextField حقل إدخال نصي بسيط إدخال نصوص قصيرة
VBox/HBox حاويات لترتيب العناصر عموديًا أو أفقيًا تنظيم تخطيط الواجهة

الخاتمة

تعد الأصناف البسيطة في مكتبة JavaFX الأساس الذي يبني عليه المطورون واجهات التطبيقات الرسومية. فهم هذه الأصناف والخصائص المرتبطة بها يفتح المجال لاستخدام الإمكانيات الكاملة للمكتبة في تطوير تطبيقات سطح المكتب الحديثة، التي تتميز بالجمال والفاعلية والمرونة. كما يتيح التصميم المعياري والفصل بين الكود والتصميم باستخدام FXML و CSS بناء تطبيقات ذات جودة عالية وصيانة أسهل. مع هذه المعرفة، يصبح من الممكن الانتقال لاحقًا إلى استخدام أصناف ومكونات أكثر تعقيدًا ضمن JavaFX، مثل الرسوم المتحركة، الجداول، وأدوات الوسائط المتعددة.


المصادر والمراجع

  • موقع Oracle الرسمي عن JavaFX: https://openjfx.io/

  • كتاب “JavaFX 8 Introduction by Example” – Carl Dea et al.


هذا المقال يسلط الضوء بشكل شامل على أهم الأصناف البسيطة في JavaFX، مع شرح عملي لكيفية استخدامها ضمن بنية تطبيق JavaFX القياسية، ما يساعد القارئ على بناء أساس متين في تطوير واجهات التطبيقات باستخدام هذه المكتبة.